OR的MYSQL语法?

时间:2011-06-17 08:29:58

标签: php mysql

我有一个包含2列的mysql表和一组名为MAIN的值。 表1:

col1, int(11)
col2, int(11)

一组值: 主要:1,3,4

col1col2包含1000行之间1到10之间的随机整数。然后,删除col1col1包含SAME整数的任何行。

我正在尝试从table1中提取这些行,其中: col1包含MAINcol2的值不包含col2。 和 MAIN包含来自col1mysql_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) "); 的值不是。

在发明的伪代码中我有:

array

关于正确语法是什么的任何想法?

P.S。值集以PHP {{1}}开始。

4 个答案:

答案 0 :(得分:4)

也许您正在寻找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)而col2不是main)或(col1不在(MAIN)和col2在(main)),但写得更简洁;)

答案 1 :(得分:1)

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()条件中使用的正确值列表。

答案 2 :(得分:0)

试试这个:

SELECT col1, col2 FROM table1 WHERE (col1 IN MAIN and col2 NOT IN MAIN) OR (col2 IN MAIN AND col1 NOT IN MAIN)

答案 3 :(得分:0)

好像你需要这样的smth

SELECT 
  col1,col2 
FROM 
  table1 
WHERE 
 (col1 in (1,2,3) and col2 not in (1,2,3)) or
 (col1 not in (1,2,3) and col2 in (1,2,3))