回答編集履歴

2

追記の追記

2016/07/01 06:48

投稿

masaya_ohashi
masaya_ohashi

スコア9206

test CHANGED
@@ -25,3 +25,49 @@
25
25
  ###追記
26
26
 
27
27
  質問文の条件「1を優先する場合もある」を見落としていました…このやり方はだめですね
28
+
29
+
30
+
31
+ ###追記の追記
32
+
33
+ 悔しかったので優先度テーブルも考慮したやりかたを書いておきます。
34
+
35
+ [http://sqlfiddle.com/#!9/dce432/1](http://sqlfiddle.com/#!9/dce432/1)
36
+
37
+
38
+
39
+ ```SQL
40
+
41
+ /*優先度テーブル*/
42
+
43
+ /*1と2なら2のほうが優先度が高いが、1と3なら1のほうが優先度が高い*/
44
+
45
+ CREATE TABLE bar_priority(bar INT PRIMARY KEY, priority INT);
46
+
47
+ INSERT INTO bar_priority
48
+
49
+ VALUES
50
+
51
+ (1, 10),
52
+
53
+ (2, 15),
54
+
55
+ (3, 5);
56
+
57
+
58
+
59
+ SELECT foo, bar, buz FROM data_table
60
+
61
+ LEFT JOIN bar_priority USING(bar)
62
+
63
+ WHERE (foo, priority) IN (
64
+
65
+ SELECT foo, MAX(priority) FROM data_table
66
+
67
+ LEFT JOIN bar_priority USING(bar)
68
+
69
+ GROUP BY foo
70
+
71
+ );
72
+
73
+ ```

1

追記

2016/07/01 06:48

投稿

masaya_ohashi
masaya_ohashi

スコア9206

test CHANGED
@@ -19,3 +19,9 @@
19
19
  );
20
20
 
21
21
  ```
22
+
23
+
24
+
25
+ ###追記
26
+
27
+ 質問文の条件「1を優先する場合もある」を見落としていました…このやり方はだめですね