我有一个包含2列和一组名为MAIN的值的mysql表。table1:
col1, int(11)
col2, int(11)取值集: MAIN: 1,3,4
对于1000行,col1和col2包含1到10之间的随机整数。然后,删除col1和col1包含相同整数的所有行。
我正在尝试从table1中提取这些行,其中:col1包含来自MAIN的值,而col2不包含。col2包含来自MAIN的值,而col1不包含。
在我发明的伪代码中,我有:
mysql_query("SELECT col1,col2
FROM table1
WHERE (col1 contains values from MAIN and col2 does not)
OR (col2 contains values from MAIN and col1 does not) ");你知道正确的语法是什么吗?
备注:这组值以PHP array开头。
发布于 2011-06-17 16:34:39
也许你在找XOR logical operator?
SELECT
col1,
col2
FROM
table1
WHERE
( col1 IN ( 1, 3, 4 ) XOR col2 IN ( 1, 3, 4 ) );XOR工作原理的一个小示例:
SELECT true XOR true; -- false
SELECT true XOR false; -- true
SELECT false XOR true; -- true
SELECT false XOR false; -- false这几乎就是你的全部( col1 in ( main ) and col2 not in MAIN ) OR ( col1 not in ( main ) and col2 in ( MAIN ) ),但写得更简洁;)
发布于 2011-06-17 16:31:56
WHERE (col1 IN (MAIN) AND col2 NOT IN (MAIN)) OR (col1 NOT IN (MAIN) AND col2 IN (MAIN))当然,MAIN应该是你的list, of, values。
如果您的PHP数组只包含整数,那么您可以使用implode(',', $array)来获得在IN()条件中使用的正确的值列表。
发布于 2011-06-17 16:33:33
试试这个:
SELECT col1, col2 FROM table1 WHERE (col1 IN MAIN and col2 NOT IN MAIN) OR (col2 IN MAIN AND col1 NOT IN MAIN)https://stackoverflow.com/questions/6383229
复制相似问题