使用WHERE将表连接到自身

时间:2013-11-19 21:15:01

标签: mysql sql join

我有一个名为“来宾”的表格,其中包含以下列:

  • guest_id
  • wedding_id
  • FNAME
  • L-NAME
  • inviter_id

我需要从某个wedding_id中选择所有来宾,然后加入实际的邀请者fnamelname而不是inviter_id(与来宾ID对应)

我到目前为止:

SELECT u.fname fname, u.lname lname, r.fname inviter_f, r.lname inviter_l 
FROM guests u LEFT JOIN guests r ON u.inviter_id = r.guest_id

我缺少的唯一一块拼图是添加:

where wedding_id=10

(仅为特定婚礼ID选择结果)。

编辑后: 最后的查询: SELECT u.fname fname,u.lname lname,r.fname inviter_f,r.lname inviter_l     来自客人你LEFT JOIN来宾r ON u.inviter_id = r.guest_id,其中u.wedding_id = 10

现在有一个跟进问题:

如果没有inviter_id(设置为0),如何返回空的''值,在当前查询中它将其返回为NULL? (inviter_f和inviter_l返回NULL)

2 个答案:

答案 0 :(得分:4)

尝试此查询:

SELECT u.fname fname, u.lname lname, r.fname inviter_f, r.lname inviter_l FROM guests u LEFT JOIN guests r ON u.inviter_id = r.guest_id WHERE u.wedding_id = 10

答案 1 :(得分:0)

FROM guests u LEFT JOIN guests r ON u.inviter_id = r.guest_id and r.wedding_id = u.wedding_id where u.wedding_id = 10;