SELECT行但优先考虑非NULL值

时间:2014-01-15 16:04:53

标签: mysql sql

假设我有一张表A如下:

uid      | productid | price 
1        | 1         | 15    
2        | 1         | 20    
1        | 2         | 24    
NULL     | 1         | 90    
NULL     | 2         | 49    

我需要一个SQL查询,它将返回一个特定的uid,产生价格,但如果这个uid,productid对不存在将返回uid NULL和相同productid的价格。

对于上面的例子,如果我问uid = 1和productid = 1的价格,我需要返回第1行(而不是第4行)。 如果我问uid = 2和productid = 2的价格,我需要这次返回最后一行,因为uid和productid没有(2,2)对。

我希望很清楚...... 先感谢您。

1 个答案:

答案 0 :(得分:2)

同时选择:where uid=2 or uid is null。然后首先采用非空值排序的第一条记录。

Select price
from TableName
where productid=2
and (uid=2 or uid is null)
order by uid is null
limit 1