在我的mysql表中,列contact
为空或者有一个日期。
$sql = "SELECT * FROM cars WHERE eidos='AETOS' order by contact asc";
我的目标是在顶部显示更近的contact
日期。
现在,它向我展示了顶部没有日期的所有行,最后那些contact
日期的行以升序显示,较小的日期在顶部。
如何在顶部显示contact
日期为升序的行,后跟空行?
答案 0 :(得分:1)
您可以在ORDER BY
语句中使用多个条件。像这样:
SELECT *
FROM Cars
WHERE eidos='AETOS'
ORDER BY contact is null, contact asc
修改 - 如果值不是null
,而只是一个空字符串,则可以通过将contact is null'
更改为'contact = ''
来实现。如果你不知道,你可以随身包裹coalesce
:
SELECT *
FROM Cars
WHERE eidos='AETOS'
ORDER BY COALESCE(id,'') = '', contact asc
答案 1 :(得分:0)
您可以使用多个where子句来选择正确的“eidos”匹配项以及仅非空行。
select *
from Cars
WHERE eidos = 'AETOS'
ORDER BY contact ASC
GROUP BY contact
答案 2 :(得分:0)
$sql = "SELECT * FROM cars WHERE eidos='AETOS' order by case when contact in ('',0) then 1 else 0 end, contact asc";