SQL从其他表中选择具有相应值的列

时间:2016-03-29 18:24:20

标签: mysql sql join

Suppliers

 Part Number Supplier

    XXX        A           
    XXX        B
    YYY        C

Part Numbers

 PK_ID Part Number

   1        XXX
   2        YYY

我想根据FK_ID中的PK_ID附加列Part Numbers选择它:

 FK_ID Part Number Supplier

   1       XXX        A           
   1       XXX        B
   2       YYY        C

什么不起作用:

 SELECT s.`Part Number`, s.`Supplier`, p.`PK_ID` 
   FROM `Suppliers` AS s, `Part Numbers` AS p 
JOIN ON s.`Part Number` = p.`Part Number` 

3 个答案:

答案 0 :(得分:1)

永远不要在FROM子句中使用逗号。始终使用明确的JOIN语法:

SELECT s.`Part Number`, s.Supplier, p.PK_ID`
FROM Suppliers JOIN
     `Part Numbers` p 
     ON s.`Part Number` = p.`Part Number` ;

我鼓励您为没有空格的表和列命名,因此您无需转义名称。必须在SQL语句中添加一堆反引号只会分散写入或读取查询的注意力。

答案 1 :(得分:0)

尝试:

SELECT s.`Part Number`, s.`Supplier`, p.`PK_ID`
FROM `Suppliers` AS s 
JOIN `Part Numbers` AS p ON s.`Part Number` = p.`Part Number`

答案 2 :(得分:0)

您在查询中的JOIN之前使用逗号,这是不允许的。您可以使用自然连接,因为您具有相同的列名Part Number

 SELECT `Part Number`, Supplier, PK_ID
  FROM Suppliers NATURAL JOIN
 `Part Numbers`;

避免使用包含空格的列名,而是使用_来连接列的名称

请参阅指定的链接以获取更多详细信息:Naming Conventions

Mysql table and column (field) naming conventions