我正在尝试编写这样的查询(希望只有一个查询):从收件箱表中选择所有消息,其中消息的“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)
试试这个:
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)
逻辑是:
SenderNumber您可以在此处和TextMessage表格中选择您想要的内容inboxINNER JOIN带有表sentitems和两个条件:DestinationNumberfrom tablesentitems和SenderNumberfrom tableinbox相同+CreatorID带有您想要的值,此处为“Martin”使用INNER JOIN将仅返回符合这两个条件的结果。有关更多信息,请查看文档:https ://sql.sh/cours/jointures/inner-join