0

我想进行内部连接并收到以下错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 7 行的 'INNER JOIN ( SELECT Chalanits.Chalanit_partno, Chalanits.Chalanit_qty FROM Chala' 附近使用正确的语法

SELECT Cuspoit.`Cuspoit_partno`, Cuspoit.`Cuspoit_unitprice`, Chalanits.Chalanit_qty
FROM Cuspoit 
WHERE Cuspoit.`Cuspoit_cuspoid` =
(
SELECT Chalanits.Chalanit_cuspoid FROM Chalanits WHERE Chalanits.Chalanit_chalanid='CX-1306001' LIMIT 1
)
INNER JOIN (
SELECT Chalanits.Chalanit_partno, Chalanits.Chalanit_qty
FROM Chalanits 
WHERE Chalanits.Chalanit_chalanid='CX-1306001')
ON Cuspoit.`Cuspoit_partno`= Chalanits.Chalanit_partno

谁能帮我找出错误??

4

4 回答 4

1

错误是因为该WHERE子句应该在INNER JOIN.

但是,除此之外,您似乎正在使用真正不需要的子查询。

SELECT Cuspoit.`Cuspoit_partno`, Cuspoit.`Cuspoit_unitprice`, Chalanits.Chalanit_qty
FROM Cuspoit 
INNER JOIN Chalanits ON Cuspoit.`Cuspoit_partno`= Chalanits.Chalanit_partno
WHERE Cuspoit.`Cuspoit_cuspoid` = (
    SELECT Chalanits.Chalanit_cuspoid FROM Chalanits WHERE Chalanits.Chalanit_chalanid='CX-1306001' LIMIT 1
)
AND Chalanits.Chalanit_chalanid='CX-1306001'

此外,仍然存在的子查询看起来很奇怪,因为它可能会获得一个随机寄存器(取决于 PK 和 UK),因为 LIMIT 没有排序。如果你想要Chalanits具有相同cuspoid partno表的行Cuspoit,那么你想要这个:

SELECT Cuspoit.`Cuspoit_partno`, Cuspoit.`Cuspoit_unitprice`, Chalanits.Chalanit_qty
FROM Cuspoit 
INNER JOIN Chalanits
    ON Cuspoit.`Cuspoit_partno`= Chalanits.Chalanit_partno
       AND Cuspoit.`Cuspoit_cuspoid = Chalanits.Chalanit_cuspoid
WHERE Chalanits.Chalanit_chalanid='CX-1306001'
于 2013-06-21T18:03:58.753 回答
1

使用该 SQL:

SELECT Cuspoit.`Cuspoit_partno`, Cuspoit.`Cuspoit_unitprice`, Chalanits.Chalanit_qty
FROM Cuspoit
INNER JOIN (
SELECT Chalanits.Chalanit_partno, Chalanits.Chalanit_qty
FROM Chalanits 
WHERE Chalanits.Chalanit_chalanid='CX-1306001')
ON Cuspoit.`Cuspoit_partno`= Chalanits.Chalanit_partno 
WHERE Cuspoit.`Cuspoit_cuspoid` =
(
SELECT Chalanits.Chalanit_cuspoid FROM Chalanits WHERE Chalanits.Chalanit_chalanid='CX-    1306001' LIMIT 1
)

您已反转 WHERE 和 THE INNER JOIN 命令

于 2013-06-21T17:50:09.460 回答
1

Where 子句位于所有连接之后。当您使用子查询 inteh where 子句时,请尝试使用 IN 而不是 =。

于 2013-06-21T17:51:11.667 回答
0

在 WHERE 子句之后不能有 INNER JOIN

WHERE Cuspoit.`Cuspoit_cuspoid` =
(
SELECT Chalanits.Chalanit_cuspoid FROM Chalanits WHERE Chalanits.Chalanit_chalanid='CX-1306001' LIMIT 1
)
INNER JOIN (

这是错误

于 2013-06-21T17:51:21.870 回答