我有一个名为items
的表格如下:
id oId key value
1 0 color green
2 0 size 30
3 1 color red
4 2 color blue
带有oId=0
的上一行指定了项目的默认值
我需要选择具有特定key
的项目的所有value
,oId
,其中包含默认值(oId = 0),如果是特定key
和{{1}因为value
不存在。
例如。对于第2项,它应该返回
oId
我写了以下查询:
id oId key value
1 0 size 30
2 2 color blue
有没有办法优化上述查询?
答案 0 :(得分:1)
您可以在右侧索引上使用JOIN:
SELECT t1.`key`, IFNULL(t2.value, t1.value)
FROM `items` AS t1
LEFT JOIN `items` AS t2
ON t1.`key` = t2.`key` AND t2.`oId` = 2
WHERE t1.`oId` = 0;