gpt4 book ai didi

mysql - 跨 2 个表的 SELECT 语句

转载 作者:行者123 更新时间:2023-11-29 08:18:12 24 4
gpt4 key购买 nike

我有一个网络应用程序,我正在尝试分析和优化,最后一件事是修复这个运行缓慢的功能。无论如何,我都不是一名 SQL 专家,但我知道,在一步 SQL 查询中执行此操作比我现在使用多个查询、排序和循环迭代的方式执行此操作要快得多。

问题基本上是这样的 - 我想要来自“用户”表的数据行,由 UserData 对象表示,其中给定回合的“出价”表中没有该用户的条目。换句话说,我的数据库中哪些投标人尚未提交投标。

在 SQL 伪代码中,这将是

SELECT * FROM users WHERE users.role='BIDDER' AND 
users.user_id CANNOT BE FOUND IN bids.user_id WHERE ROUND=?

(显然这不是有效的 SQL,但我不太了解 SQL,无法将其正确组合在一起)。

谢谢!

最佳答案

您可以使用 LEFT JOIN 来完成此操作。LEFT JOIN 在两个表之间创建链接,就像 INNER JOIN 一样,但还将包含 LEFT 表(此处为 users )中与右表没有关联的记录。

这样做后,我们现在可以添加一个 where 子句来指定我们只需要与右表没有关联的记录。

右表和左表由编写连接的顺序决定。左表是第一部分,右表(此处为出价)位于右侧部分。

SELECT * FROM users u
LEFT JOIN bids b
ON u.user_id = b.user_id
WHERE u.role='BIDDER' AND
b.bid_id IS NULL

关于mysql - 跨 2 个表的 SELECT 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20146825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com