psid mysql_sql-帮助将子查询转换为具有联接的查询

博客作者遇到在MySQL4环境中使用连接查询替代子查询的问题。他们试图从承包商表中选取所有不在特定标签ID和县ID列表中的记录,但连接查询无法返回预期的34行结果。子查询方法能正常工作,但因为MySQL4不支持,所以需要转换为连接查询。作者提供了两种查询方式,一个是子查询,另一个是尝试的连接查询,但连接查询没有返回任何数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我陷入了联接查询.客户端站点正在运行mysql4,因此不能选择子查询.我使用联接重写的尝试进行得不太顺利.

我需要选择承包商表中列出的所有不在给定标签ID&县ID.但是,它们可能会列在

contractors2label,以及其他标签和县ID.

表:承包商

cID (primary, autonumber)

company (varchar)

…etc…

表:contractors2label

cID

labelID

countyID

psID

此查询与子查询一起工作:

SELECT company, contractors.cID

FROM contractors

WHERE contractors.complete = 1

AND contractors.archived = 0

AND contractors.cID NOT IN (

SELECT contractors2label.cID FROM contractors2label

WHERE labelID <> 1 AND countyID <> 1

)

我认为带有联接的查询将是等效的,但它不会返回任何结果.手动扫描数据显示我应该得到34行,这是上面的子查询返回的结果.

SELECT company, contractors.cID

FROM contractors

LEFT OUTER JOIN contractors2label ON contractors.cID = contractors2label.cID

WHERE contractors.complete = 1

AND contractors.archived = 0

AND contractors2label.labelID <> 1

AND contractors2label.countyID <> 1

AND contractors2label.cID IS NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值