首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OR?的MYSQL语法

OR?的MYSQL语法
EN

Stack Overflow用户
提问于 2011-06-17 16:29:58
回答 4查看 65关注 0票数 3

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

代码语言:javascript
复制
col1, int(11)
col2, int(11)

取值集: MAIN: 1,3,4

对于1000行,col1col2包含1到10之间的随机整数。然后,删除col1col1包含相同整数的所有行。

我正在尝试从table1中提取这些行,其中:col1包含来自MAIN的值,而col2不包含。col2包含来自MAIN的值,而col1不包含。

在我发明的伪代码中,我有:

代码语言:javascript
复制
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开头。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-17 16:34:39

也许你在找XOR logical operator

代码语言:javascript
复制
SELECT
  col1,
  col2
FROM
  table1
WHERE
  ( col1 IN ( 1, 3, 4 ) XOR col2 IN ( 1, 3, 4 ) );

XOR工作原理的一个小示例:

代码语言:javascript
复制
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 ) ),但写得更简洁;)

票数 4
EN

Stack Overflow用户

发布于 2011-06-17 16:31:56

代码语言:javascript
复制
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()条件中使用的正确的值列表。

票数 1
EN

Stack Overflow用户

发布于 2011-06-17 16:33:33

试试这个:

代码语言:javascript
复制
SELECT col1, col2 FROM table1 WHERE (col1 IN MAIN and col2 NOT IN MAIN) OR (col2 IN MAIN AND col1 NOT IN MAIN)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6383229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档