在“选择查询”中包含一个字符串

时间:2011-01-25 06:49:12

标签: sql mysql

我想知道我们可以在下面进行此查询吗?

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

2 个答案:

答案 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约束的国家/地区表格用于国家/地区字段 使用外键。