你们能帮我理解关于 join 的 SQL 规范吗?我不明白。我不断收到名为“on 子句上的未知列列表”的错误。我在 SQL 语法上遇到了这个错误,我几乎把它擦在脸上,我只是不明白为什么它不起作用,我读过一些关于它是因为优先级等的文章,但我对我所拥有的内容感到非常困惑这里做错了。
select product.name , product.price from product inner join product_category on
(product_category.product_no = product.product_no ) where product_category.sub_category =
"COFFIN";
Run Code Online (Sandbox Code Playgroud)
我知道这个问题已经在这里被问过无数次了,但是我看到的问题在这个非常基本的 sql 语法中远没有那么复杂。
谢谢你的协助。
编辑:我刚刚意识到我的product_category不是我的产品表的直接子项,所以我只是输入
select * from product
join specifications
join product_category on ( specifications.product_no = product_category.product_no);
Run Code Online (Sandbox Code Playgroud)
但这仍然给了我一个错误,未知列product_category。
我已经阅读并遵循了与此站点类似的一些说明: MYSQLunknownclausejoincolumninnextjoinUnknowncolumn {0}inonclauseMySQL “UnknownColumninOnClause”
我真的很沮丧。我真的无法让它发挥作用。
对于加入查询中的每个新表,每个表必须至少有一个 ON 子句。如果不知道架构(表名、列等),很难准确地知道您要做什么,但这里有一个示例
select *
from product p
join specifications s
on p.product_no = s.product_no
join product_category pc
on pc.spec_no = p.spec_no
Run Code Online (Sandbox Code Playgroud)
另请查看有关表别名的链接。提供了一个关于连接的好例子 + 关于如何提高 SQL 可读性的非常有用的信息 http://msdn.microsoft.com/en-us/library/ms187455(v=sql.90).aspx
我发现这篇文章很有用,并且它直观地显示了不同类型的联接 http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html