SQL语句从两个不同的表中获取信息

时间:2019-03-09 21:33:45

标签: mysql sql

我有两个表,其中一个表称为 participants_tb ,第二个表称为 allocation_tb 。在 participant_tb 上,我的列为 participant_id 名称用户名。 在distribution_tb下,我的列为 allocation_id 发件人用户名接收者用户名完成完成列包含以下三个数字中的任何一个:0、1、2。

我使用此sql语句获取我的值

SELECT *, COUNT(done) d
FROM participants_tb 
JOIN allocation_tb ON (username=receiver_username)
WHERE done = 0 || done = 1 
GROUP BY receiver_username

它工作得很好,我的问题是,我希望它也将参与者的信息包括在partners_tb中,而不是在location_tb中。我尝试使用左外部联接,但是它没有按预期方式工作,因为我希望它包含仅在partners_tb中而不是在allocate_tb中的参与者,因为完成在location_tb中的where子句中,将不包含这些信息。

1 个答案:

答案 0 :(得分:1)

您似乎想要:

SELECT p.*, COUNT(a.done) as d
FROM participants_tb p LEFT JOIN
     allocation_tb a
     ON p.username = a.receiver_username) AND
        a.done IN (0, 1)
GROUP BY p.participant_id;

注意:

  • LEFT JOIN保留所有参与者。
  • GROUP BY必须在第一张桌子上。
  • 您可以将SELECT p.*GROUP BY结合使用-假设GROUP BY键是唯一的(或主键)。
  • 所有列均应合格。
  • IN是表达逻辑的一种简便方法。