MySQL中显示包含特定值的记录。

3
我需要将数据库中“特色”记录列在最前面。如果一个列表是“特色”,则在“特色”列中的值为“yes”。
我不确定使用什么样的MySQL查询可以给我这个结果,或者它是否存在。但我另外一个想法是有一个查询获取所有特色的列表并将它们列出来,然后另一个查询获取所有不是特色的列表。
你有任何想法吗?谢谢!
2个回答

4

使用带有CASE语句的ORDER BY,例如

SELECT * 
FROM TheTable
ORDER BY CASE LOWER(Featured)
           WHEN 'yes' THEN 0 
           ELSE 1 
         END 
         ASC,
         SomeOtherColumnNameForAMinorKeySort ASC

编辑:将RecordName重命名为SomeOtherColumnNameForAMinorKeySort,以更好地表达该列的用途。


是的,这与strager的想法类似,但我们需要将一些文本数据“yes”转换为数字值以进行排序。试试看,让我知道它是否有效。 - David Andres
谢谢David,我尝试了,但似乎不起作用。 我必须转义双引号"或使用单引号'来包含“是”这个词,这会有影响吗? - Chris Bier
不幸的是,它仍然无法正常工作,我似乎找不到关于这个问题的MySQL文档。你有链接吗?谢谢David :) - Chris Bier
你是否遇到了错误,或者结果集没有正确排序? - David Andres
特色列中的值是从“yes”和“no”还是“yes”和NULL范围内的? - David Andres
显示剩余8条评论

0
SELECT fields FROM table ORDER BY featured DESC;

如果featured是一个位字段,那么这将起作用。在这种情况下,它是一个文本列,可能是“是”或“否”。 - David Andres

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接