php - 如何使用最后一个为零的字段对 sql 查询进行排序?

标签 php mysql

我有一个 sql 表,我按过期时间排序,这是一个 unix 时间戳,如果没有过期时间,我只是将其设置为 0,我遇到的问题是当我在 ASC 中对这一列进行排序时(过期首先)带有 0 的行最先显示,有没有办法让它们最后显示?

这是一个示例查询:

SELECT s.`id`, s.`info`, s.`website`, s.`date`, s.`provider_id`, s.`drmfree`, 
       s.`steam`, s.`desura`, s.savings, s.pwyw, s.pounds, s.dollars, s.euros, 
       s.has_screenshot, s.screenshot_filename, s.`expires`, p.`name` 
FROM `game_sales` s 
      LEFT JOIN `game_sales_provider` p 
            ON s.provider_id = p.provider_id   
WHERE s.`accepted` = 1 AND s.provider_id = ? 
ORDER BY s.expires ASC

最佳答案

最简单的方法, bool 运算。

ORDER BY s.expires = 0, s.expires

然而,这仅适用于 mysql。

s.expires的值为0时,则

 0 = 0 --> returns true or 1

否则,如果不等于零,假设1

 1 = 0 --> returns false or 0

如果您还想在其他 RDBMS 上工作,请使用 CASE

 ORDER BY CASE WHEN s.expires = 0 THEN 1 ELSE 0 END, s.expires

关于php - 如何使用最后一个为零的字段对 sql 查询进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18421571/

相关文章:

php - 如何用 php 比较 mysql 中的两个表?

php - 从mysql数据库中的两个不同行中减去值

mysql - 用于在表中搜索字符串的 SQL 查询?

请求数据库后 PHP 7.2 password_verify() 不工作

javascript - 如果输入有值,将其添加到 php 中的变量中?

php - 将变量传递给 php eval()

php - 如何编写直方图、饼图等的代码?

php - 如何在 PHP 5.4 中遍历 SplObjectStorage 时获取与当前键关联的对象

php - 查找下次营业时间; mysql小时计算

c# - 根据数据库中存在的内容控制可见