我不知道该怎么解释,我有一个三列的表,我需要选择列值不在其他列中重复的行。
Table:
CREATE TABLE `new_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`col1` varchar(45) NOT NULL,
`col2` varchar(45) NOT NULL,
`col3` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `new_table` (`col1`, `col2`, `col3`) VALUES ('red', 'blue', 'red');
INSERT INTO `new_table` (`col1`, `col2`, `col3`) VALUES ('white', 'red', 'yellow');
INSERT INTO `new_table` (`col1`, `col2`, `col3`) VALUES ('red', 'red', 'red');
INSERT INTO `new_table` (`col1`, `col2`, `col3`) VALUES ('yellow', 'blue', 'black');
我在
xor
语句中尝试了where
。SELECT * FROM new_table WHERE
col1 LIKE '%red%'
xor col2 LIKE '%red%'
xor col3 LIKE '%red%';
但是我没有得到想要的结果
Output of this code
ID COL1 COL2 COL3
2 white red yellow
3 red red red
我需要的输出
ID COL1 COL2 COL3
2 white red yellow
如果我有N个列,我知道这不是最好的数据库设计,但只是为了知识。
SQLFiddle
最佳答案
像这样的:
SELECT *
FROM new_table
WHERE CONCAT( col1, ' ', col2, ' ', col3 ) LIKE "%red%"
AND col1 <> col2
AND col2 <> col3
AND col1 <> col3;
关于mysql - MySQL选择具有唯一列值的行与其他列进行比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22596073/