更好的方式来条件偏好sql

时间:2014-09-26 15:52:13

标签: php mysql sql

我有一个名为items的表格如下:

id oId key    value
1  0   color  green
2  0   size   30
3  1   color  red 
4  2   color  blue

带有oId=0的上一行指定了项目的默认值 我需要选择具有特定key的项目的所有valueoId,其中包含默认值(oId = 0),如果是特定key和{{1}因为value不存在。

例如。对于第2项,它应该返回

oId

我写了以下查询:

id oId key   value
1  0   size  30
2  2   color blue

有没有办法优化上述查询?

1 个答案:

答案 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;

SQLFiddle