【发布时间】:2010-03-13 12:53:20
【问题描述】:
我被一个带有连接的查询卡住了。客户端的站点正在运行 mysql4,因此子查询不是一个选项。我使用连接重写的尝试并不顺利。
我需要选择承包商表中列出的所有承包商,这些承包商不在contractors2label 表中,并且具有给定的标签 ID 和县 ID。然而,它们可能会列在 带有其他标签和县 ID 的contractors2label。
表:承包商
cID(主要,自动编号)
公司 (varchar)
...等等...
表:contractors2label
cID
标签ID
县ID
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
【问题讨论】:
-
+1 表示是新手,并设法提供格式正确的问题,并很好地描述了您的问题,包括示例代码 :)