关于SELECT的SQL语法

时间:2010-10-26 02:42:56

标签: mysql

我一直收到一条错误,指出b.BookCode不存在特定列但我完全清楚它确实存在!我只是想确保长时间盯着这个以至于我没有错过任何明显的东西。

SELECT AuthorLast, AuthorFirst, OnHand, Title 
FROM (Inventory i, Author a, Book b) 
WHERE (i.BookCode = b.BookCode AND b.AuthorNum = a.AuthorNum);

我对SQL很新,所以我不确定我的语法是否关闭,我还需要围绕我在SELECT中提到的列的括号。我一开始在他们周围有括号并且出错了,并且对于原因感到困惑。

谢谢!

2 个答案:

答案 0 :(得分:0)

最低限度,您应该将其更改为:

SELECT AuthorLast, AuthorFirst, OnHand, Title  
FROM Inventory i, Author a, Book b  
WHERE i.BookCode = b.BookCode AND 
      b.AuthorNum = a.AuthorNum; 

...这假设select语句的SELECT部分​​中的列不明确(即,在FROM部分的多个表中找到)。

答案 1 :(得分:0)

您使用的是旧的连接语法,您应该使用INNER JOIN。

SELECT AuthorLast, AuthorFirst, OnHand, Title
FROM Inventory i
INNER JOIN Author a
    USING (BookCode)    -- You can also use ON, but USING remove the ambiguous columns
INNER JOIN Book b
    USING (AuthorNum);   -- Same thing here

如果您收到错误消息,说明一列不存在,那么您应该仔细检查一下。 MySQL并不是为了它而骗你!例如,您可以对过时的数据库进行查询。