teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記の追記

2016/07/01 06:48

投稿

masaya_ohashi
masaya_ohashi

スコア9210

answer CHANGED
@@ -11,4 +11,27 @@
11
11
  ```
12
12
 
13
13
  ###追記
14
- 質問文の条件「1を優先する場合もある」を見落としていました…このやり方はだめですね
14
+ 質問文の条件「1を優先する場合もある」を見落としていました…このやり方はだめですね
15
+
16
+ ###追記の追記
17
+ 悔しかったので優先度テーブルも考慮したやりかたを書いておきます。
18
+ [http://sqlfiddle.com/#!9/dce432/1](http://sqlfiddle.com/#!9/dce432/1)
19
+
20
+ ```SQL
21
+ /*優先度テーブル*/
22
+ /*1と2なら2のほうが優先度が高いが、1と3なら1のほうが優先度が高い*/
23
+ CREATE TABLE bar_priority(bar INT PRIMARY KEY, priority INT);
24
+ INSERT INTO bar_priority
25
+ VALUES
26
+ (1, 10),
27
+ (2, 15),
28
+ (3, 5);
29
+
30
+ SELECT foo, bar, buz FROM data_table
31
+ LEFT JOIN bar_priority USING(bar)
32
+ WHERE (foo, priority) IN (
33
+ SELECT foo, MAX(priority) FROM data_table
34
+ LEFT JOIN bar_priority USING(bar)
35
+ GROUP BY foo
36
+ );
37
+ ```

1

追記

2016/07/01 06:48

投稿

masaya_ohashi
masaya_ohashi

スコア9210

answer CHANGED
@@ -8,4 +8,7 @@
8
8
  WHERE (foo, bar) IN (
9
9
  SELECT foo, MAX(bar) FROM data_table GROUP BY foo
10
10
  );
11
- ```
11
+ ```
12
+
13
+ ###追記
14
+ 質問文の条件「1を優先する場合もある」を見落としていました…このやり方はだめですね