SQL:选择与另一个表中的某项匹配的所有行

时间:2018-10-08 12:13:54

标签: php sql

我正在尝试编写这样的查询(希望只有一个查询): 从收件箱表中选择所有消息,在“ Sentitems”表中找到消息的“ SenderNumber”,并且CreatorID为“ Martin”

例如,我的收件箱表如下所示:

| SenderNumber   |   TextMessage    |
    11111111       Yes, nice world!
    22222222         Howdy folks!

我的表情表看起来非常相似

| DestinationNumber  | TextMessage |  CreatorID
      11111111         Hello world?    Martin
      22222222          How you do?     John

我希望在这种情况下从收件箱表中获取所有邮件-我的情感表中有一个“ SenderNumber” /“ DestinationNumber” 条目, CreatorID 是“马丁”。

因此在这种情况下,它将返回该条目,因为另一个数字的creatorID不是'Martin'而是'John'

| SenderNumber   |   TextMessage    |
    11111111       Yes, nice world!

1 个答案:

答案 0 :(得分:3)

尝试一下:

SELECT i.SenderNumber, i.TextMessage
FROM inbox as i
INNER JOIN sentitems as s ON s.DestinationNumber = i.SenderNumber AND s.CreatorID = 'Martin'

逻辑是:

  1. 您从表SenderNumber的{​​{1}}和TextMessage中选择所需的内容
  2. 现在您将inbox与表INNER JOIN和两个条件一起使用:表sentitems中的DestinationNumber和表sentitems中的SenderNumber与您想要的值相同的inbox,在这里是“马丁”

使用CreatorID仅返回符合两个条件的结果。有关更多信息,请参阅文档:https://sql.sh/cours/jointures/inner-join