我想知道我们可以在下面进行此查询吗?
SELECT America, England, DISTINCT (country) FROM tb_country
将(我的意图)显示:
America
England
(List of distinct country field in tb_country)
所以重点是显示(例如)美国和英格兰,即使DISTINCT国家字段没有返回任何内容。基本上我需要这个查询列出一个选择下拉列表,并给出一些用户可以选择的粘性值,同时允许他们自己添加一个新的国家。
毋庸置疑,如果tb_country中的一行具有America或England的值,它们将不会在查询结果中显示为重复。因此,如果tb_country具有值列表:
Germany
England
Holland
查询只会输出:
America
England
Germany
Holland
答案 0 :(得分:7)
您需要使用UNION:
SELECT 'America' AS country
UNION
SELECT 'England' AS country
UNION
SELECT DISTINCT(c.country) AS country
FROM TB_COUNTRY c
UNION将删除重复项; UNION ALL不会(但速度更快)。
数据类型必须与SELECT子句中的每个序号位置匹配。这意味着,如果第一个查询中的第一列是INT,那么之后所有联合语句的第一列也需要是INT或NULL
。
答案 1 :(得分:0)
为什么不在tb_country中添加权重列并使用order子句:
执行一次:
update country set weight = 1 where country = 'England';
update country set weight = 1 where country = 'America';
然后使用它:
select distinct(country) from tb_country order by desc weight ;
另一种方法是使用具有两列(国家,权重)和外部联接的额外国家/地区表。
Personnaly我宁愿选择具有UNIQUE约束的国家/地区表格用于国家/地区字段 使用外键。