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

Mar*_*tin -1 php sql

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

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

| SenderNumber   |   TextMessage    |
    11111111       Yes, nice world!
    22222222         Howdy folks!
Run Code Online (Sandbox Code Playgroud)

我的Sentites表看起来非常相似

| DestinationNumber  | TextMessage |  CreatorID
      11111111         Hello world?    Martin
      22222222          How you do?     John
Run Code Online (Sandbox Code Playgroud)

我想在这种情况下从收件箱表中获取所有消息 -在我的Sentitems表中有一个“SenderNumber”/“DestinationNumber”条目,并且CreatorID是“Martin”。

因此,在这种情况下,它将返回此条目,因为另一个号码的 CreatorID 不是“Martin”而是“John”

| SenderNumber   |   TextMessage    |
    11111111       Yes, nice world!
Run Code Online (Sandbox Code Playgroud)

Mic*_*ger 5

试试这个:

SELECT i.SenderNumber, i.TextMessage
FROM inbox as i
INNER JOIN sentitems as s ON s.DestinationNumber = i.SenderNumber AND s.CreatorID = 'Martin'
Run Code Online (Sandbox Code Playgroud)

逻辑是:

  1. SenderNumber您可以在此处和TextMessage表格中选择您想要的内容inbox
  2. 现在您使用INNER JOIN带有表sentitems和两个条件:DestinationNumberfrom tablesentitemsSenderNumberfrom tableinbox相同+CreatorID带有您想要的值,此处为“Martin”

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