如何在id上自己加入mysql表

时间:2015-06-02 10:50:57

标签: mysql sql join

我有一个名为Products的表,看起来像这样:

var myTotal = myFrame.Sum();

正如您所看到的,prd_id prd_name prd_ref_id prd_status ---------------------------------------------------- 1 Prod A 0 Available 2 Prod X 3 Out of Stock 3 Prod G 1 Available 引用了同一个表,但ID不同。如果没有参考,则为prd_ref_id

我想写一个查询,比如我有0然后查询应该返回:

prd_id as 2

我想我需要以某种方式使用自联接,但它一直给我语法错误。

prd_id    prd_name    prd_ref_name     prd_status
2         Prod A      Prod 3           Out of Stock

任何帮助表示赞赏!!!

4 个答案:

答案 0 :(得分:2)

在语音中称为自联接,因为您正在将表连接到自身。但是在语法方面,加入另一个表没有区别,因此您可以像往常一样innerleft加入。当然你需要使用别名来区分这两者,但你已经正确地做到了。

select p.*,p2.prd_name    
from products p
left join products p2 on p2.prd_id = p.prd_ref_id;

答案 1 :(得分:0)

只需删除self一词即可。它不是sql中的关键字。

select p.*,p2.prd_name from products p join products p2 on p2.prd_id = p.prd_ref_id

答案 2 :(得分:0)

自连接语法如下所示:

select p.*,p2.prd_name    
from products p   
join products p2
where p2.prd_id = p.prd_ref_id

答案 3 :(得分:0)

这些是sql中的三种连接:

  • INNER JOIN:当BOTH中至少有一个匹配时返回所有行 表格
  • LEFT JOIN:返回左表中的所有行,并匹配 右表中的行
  • RIGHT JOIN:从右侧返回所有行 表,以及左表中匹配的行

所以,我认为你应该把表p作为左表,然后离开连接p2。

SELECT p.*,p2.prd_name FROM products p LEFT JOIN products p2 ON p2.prd_id = p.prd_ref_id