我在数据库中有一个photos
表,该表使用status
列来检测照片是否已经过验证...
因此,如果照片中有status = 0
,则表示未经过验证,但如果照片status = 1
则照片已经过验证。
我想添加status = 2
以选择照片作为“主照片”,以便我可以使用
SELECT photo WHERE status = 2
但如果没有选择“主照片”,我想选择任何其他照片,但优先考虑状态= 2的照片(如果有的话)..所以我想使用这样的东西:
SELECT photo WHERE status = 2 OR status != 2
..但优先考虑状态为2的照片...所以如果有status 2
的照片,它会选择该照片,但如果没有则可以选择任何照片... < / p>
可以这样做吗?
答案 0 :(得分:1)
我建议您添加另一列来存储此事实。如果不这样做,迟早(很可能更早)会出现另一个状态值,然后会产生混淆,特别是如果状态列可以有多种含义(例如3 =经验证的主照片)。
答案 1 :(得分:0)
试试这个:
SELECT photo, status = 2 AS priority
FROM table
ORDER BY priority DESC
此处表达式status = 2
将评估为1
(status = 2
为真)或0
(status = 2
为false)。
答案 2 :(得分:0)
如果status=2
始终是最高优先级:
SELECT photo WHERE status = 2 OR status != 2 FROM your_table_name ORDER BY status
或更好:
SELECT photo FROM your_table_name ORDER BY status
因为status = 2 OR status != 2
就是一切
答案 3 :(得分:0)
如果status = 2并不总是最高优先级,您仍然可以获得status = 2的第一行,然后是其他所有行:
SELECT photo FROM table ORDER By status=2 desc