好的,我有一个简单的表Tb1
ID- Word 1 - Tom 2 - tom 3 - tom 4 - cat 5 - car 6 - CAR 7 - DEER
我的目标是:
-1st,得到唯一的CASE SENSITIVE Word,所以这个sql工作正常:
select DISTINCT BINARY(word) from Tb1
-2,得到唯一的Word(不关心区分大小写),所以使用这个简单的sql
select distinct word from Tb1
第一个查询应显示Tom, tom, cat, car, CAR, DEER
(result1)。
第二个查询应显示Tom, cat, car, DEER
(result2)。
所以我想要result1减去result2:tom, CAR
。所以我试过
select w1 from (select DISTINCT BINARY(word) w1 from Tb1) Tb
where w1 NOT IN (select DISTINCT word from Tb1)
因为我有20万行,所以计算机崩溃了好像什么都没有回报。那怎么解决我的问题?
答案 0 :(得分:2)
您需要使用LEFT JOIN -
加入这两个结果CREATE TABLE tb1 (
ID INT(11) DEFAULT NULL,
Word VARCHAR(255) DEFAULT NULL
);
INSERT INTO tb1 VALUES
(1, 'Tom'),
(2, 'tom'),
(3, 'tom'),
(4, 'cat'),
(5, 'car'),
(6, 'CAR'),
(7, 'DEER');
SELECT t1.word FROM
(SELECT DISTINCT BINARY(word) word from Tb1) t1
LEFT JOIN (SELECT DISTINCT(word) word FROM tb1) t2
ON t1.word = t2.word
WHERE t2.word IS NULL
答案 1 :(得分:-1)
提出问题编号:
16901755
在MySQL上替代NOT IN