- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有世界上所有国家/地区的数据库,从 A-Z 排序,我的客户要求我突出几个国家,例如选项列表中的第一个。如何做到这一点?
我的字段是id
, country_code
, country_name
当前查询:
SELECT * FROM countries ORDER BY country_name ASC
List 是标准的 HTML 选择/选项列表,我需要像第一个选项一样显示(按国家/地区代码)UK
、US
、CA
在列表中,然后是 A-Z 中的其他国家/地区。
谢谢!
最佳答案
ORDER BY
子句可以包含任意表达式 - 它不必限于列名。您可以在 ORDER BY
中使用 IN ()
将低值 (0) 分配给您想要突出显示的那些,而将较高的值 (1) 分配给其余部分.按照您的排序顺序 country_name ASC
,这两个组将按字母顺序排序。
这是有效的,因为 0
被分配给 IN ()
列表中的那些,而 1
被分配给其余的。 0
总是排在 1
之前。
SELECT *
FROM countries
ORDER BY
CASE
-- Assign lower sort values to the specified list
WHEN country_code IN ('UK','US','CA') THEN 0
-- And higher sort values to others
ELSE 1
END ASC,
-- Sub-sort by name
country_name ASC
这是一个简短的演示:http://sqlfiddle.com/#!9/2d0cc/1
如果您需要在突出显示的集合上指定额外的排序(例如强制 UK
排在第一位),可以通过向表中添加另一列来提供排序首选项来完成而不是依赖字母顺序排序。首先为您想要的值分配较低的值,非突出显示的值可能会保持 NULL
。
code, name, sort
UK, United Kingdom, 1
CA, Canada, 2
FR, France NULL
RU, Russia NULL
US, United States 3
然后将该列添加到 ORDER BY
中:
ORDER BY
CASE
WHEN country_code IN ('UK','US','CA') THEN 0
ELSE 1
END ASC,
-- Sub-sort by the new "sort" column to force ordering
sort ASC,
-- Finally sort alphabetically for all those without
-- specific sort values
country_name ASC
不过,如果您可以接受在突出显示的行中按字母顺序排列,则可以避免所有这些额外的复杂性。
关于php - MySQL:在获取的列表中突出一些结果,例如第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35108229/
有没有一种方法可以“标记”对象的属性,使它们在反射中“突出”? 例如: class A { int aa, b; string s1, s2; public int AA
我是一名优秀的程序员,十分优秀!