首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql -选择指定表中不存在的条目

问Mysql -选择指定表中不存在的条目
EN

Stack Overflow用户
提问于 2017-07-01 21:30:25
回答 1查看 21关注 0票数 0

我有三张表:

代码语言:javascript
复制
mysql> describe messages;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| msgID  | varchar(36)  | YES  |     | NULL    |       |
| time   | mediumtext   | YES  |     | NULL    |       |
| sender | varchar(10)  | YES  |     | NULL    |       |
| hash   | varchar(44)  | YES  |     | NULL    |       |
| msg    | varchar(400) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+

mysql> describe user1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| msgID | varchar(36) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

mysql> describe user2;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| msgID | varchar(36) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

我想从'messages‘表中选择所有条目,其中msgID不在'user1’或'user2‘表中。

我试过这个:

代码语言:javascript
复制
mysql> select * from messages where msgID not in 
(select msgID from user1) 
union 
(select msgID from user2);

但它导致了以下错误:

代码语言:javascript
复制
ERROR 1222 (21000): The used SELECT statements have a different number 
of columns

我将*替换为'msgID',但结果不正确。

我该怎么办?

顺便说一句,“user”表的数量可以超过2个,因此解决方案应该足够灵活。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-01 21:36:32

尝试此操作(仅更改了分组):

代码语言:javascript
复制
mysql> select * from messages where msgID not in (
    select msgID from user1
    union 
    select msgID from user2
)

您的原始查询被解释为:

代码语言:javascript
复制
select * from messages where msgID not in (select msgID from user1) 

union 

(select msgID from user2);

而且由于messages的列比您从users2中选择的列多,所以它不知道如何“联合”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44861504

复制
相关文章

相似问题

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