首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:从table2中不存在的table1中选择字段

MySQL:从table2中不存在的table1中选择字段
EN

Stack Overflow用户
提问于 2017-05-31 15:36:09
回答 3查看 267关注 0票数 1

简化我的数据库如下所示:

代码语言:javascript
复制
CREATE
TABLE vinyls (
    id_vinyl INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,                  
    PRIMARY KEY (id_vinyl),
    UNIQUE KEY id_vinyl (id_vinyl));

CREATE
TABLE orders (
    id_order INT(10) UNSIGNED NOT NULL,                               
    PRIMARY KEY (id_order),
    UNIQUE KEY id_order (id_order));  

CREATE
TABLE orders_vinyls (
    id_order INT(10) UNSIGNED NOT NULL,
    id_vinyl INT(11) UNSIGNED NOT NULL,
    PRIMARY KEY (id_order, id_vinyl),
    UNIQUE KEY id_vinyl (id_vinyl),
    FOREIGN KEY (id_order) REFERENCES orders (id_order) ON DELETE CASCADE,
    FOREIGN KEY (id_vinyl) REFERENCES vinyls (id_vinyl) ON DELETE CASCADE);

它被设计成一个包含多个乙烯基表orders_vinyls的订单。我需要得到乙烯基,这是可供客户。这些是不在表orders_vinyls中的id_vinyl。可能会出现orders_vinyls为空的情况,这会给我带来一些困难。

我很感谢你们的帮助。

更新:例如表乙烯基:(1),(2),(3),(4),(5),(6);

表顺序:(1)、(2)、(3)

表orders_vinyls:(1,1),(1,2),(2,3),(3,4)

所以我需要得到带有id_vinyl 5或6的乙烯基,因为它们不在表orders_vinyls中。

EN

回答 3

Stack Overflow用户

发布于 2017-05-31 15:43:53

如果您想要的是选择那些没有按任何顺序出现的乙烯基,那么一种选择是使用NOT EXISTS

代码语言:javascript
复制
SELECT v.*
FROM vinyls AS v
WHERE NOT EXISTS (SELECT 1
                  FROM orders_vinuls AS ov 
                  WHERE ov.id_vinyl = v.id_vinyl)

这也适用于表orders_vinuls为空的情况。

票数 2
EN

Stack Overflow用户

发布于 2017-05-31 15:41:06

如果我对您的问题理解正确的话,您可以使用设置差异操作except

代码语言:javascript
复制
select id_vinyl from vinyls
except
select id_vinyl from orders_vinyls

如果实际的乙烯基表比较复杂,则可以使用上述查询的结果与原始表进行连接,也可以使用其他查询

代码语言:javascript
复制
select  *
from    vinyls
where   id_vinyl not in (
            select id_vinyl from orders_vinyls
        )
票数 0
EN

Stack Overflow用户

发布于 2017-05-31 15:44:35

您可以使用NOT EXISTS

代码语言:javascript
复制
Select * from table1 a
Where not exists (select 1 from table2  b where b.vynil_id = a.vynil_id)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44278503

复制
相关文章

相似问题

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