如何使 MySQL 的 SELECT DISTINCT 区分大小写?
create temporary table X (name varchar(50) NULL);
insert into X values ('this'), ('This');
现在这个查询:
select distinct(name) from X;
结果:
这个
这是怎么回事?我希望 SELECT DISTINCT 区分大小写。这不应该是默认的吗?
我宁愿更新列定义以区分大小写冲突。
像这样:
create table X (name VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NULL);
insert into X values ('this'), ('This');
SQLFiddle:http://sqlfiddle.com/#!2/add276/2/0
根据 ishmael 的评论,接受的答案无法正确处理变音符号和其他非 ASCII 字符,这是我的首选方式(正确处理这些情况):
SELECT DISTINCT NAME COLLATE latin1_bin FROM X;
您当然可以添加一个 where 子句(或任何其他普通的 SQL 内容)来限制结果。