修改mySQL查询以在结束时显示空行,而不是在使用ASC时显示顶部

时间:2014-05-13 01:11:26

标签: php mysql

在我的mysql表中,列contact为空或者有一个日期。

$sql = "SELECT * FROM cars WHERE eidos='AETOS' order by  contact asc"; 

我的目标是在顶部显示更近的contact日期。

现在,它向我展示了顶部没有日期的所有行,最后那些contact日期的行以升序显示,较小的日期在顶部。

如何在顶部显示contact日期为升序的行,后跟空行?

3 个答案:

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