我有一个表格格式如下:
+---+---+--------+
| u | i | value |
+---+---+--------+
| 0 | 1 | Value1 |
| 0 | 2 | Value2 |
| 0 | 3 | Value3 |
| 8 | 2 | Value4 |
| 9 | 2 | Value5 |
| 9 | 3 | Value6 |
+---+---+--------+
我的目标是做一个选择,为每个id(i)选择该用户(u)的值(如果存在),如果不存在,则返回到与0相关的值。例如:
用户ID 7(仅默认值)
Value1
Value2
Value3
用户ID 8(2个默认值,1个唯一)
Value1
Value4
Value3
用户ID 9(1个默认值,2个唯一)
Value1
Value5
Value6
这在单个mySQL查询中是否可行?
答案 0 :(得分:3)
SELECT COALESCE( usr.value, def.value ) AS value
FROM your_table def
LEFT JOIN your_table usr ON ( usr.i = def.i AND usr.u = your_user )
WHERE def.u = 0
这将选择u=0
和左边加入所请求用户记录的所有记录。
如果存在,请从那里获取值,否则采用默认值(使用COALESCE
)。
请注意,这只会返回存在默认值(u=0
)的记录。