SQL在给定的集合中选择IN不会缩小范围
本文关键字:IN 缩小 范围 选择 集合 SQL | 更新日期: 2023-09-27 18:26:59
我有一个包含电子邮件(称为邮件)的表,我想将特定消息标记为分配给不同的工作团队(例如team01、team02等)。消息<->团队关系保存在另一个表中(称为MailAssignments)。我正在尝试获取标记为只针对一个团队(比如team01)的消息,并且消息ID应该小于指定值,以便将消息集缩小到10。
我有下面的查询,但它总是显示分配给团队的所有消息,而不是只显示msgId<指定。
我的查询出了什么问题?
string queryGetMails =
"SELECT TOP 10 * FROM Mails WHERE msgId IN (SELECT msgId FROM MailAssignments WHERE (forTeam='team01') AND (msgId < ?) )";
我也试过这个(结果是一样的):/
"SELECT TOP 10 * FROM Mails WHERE (msgId<?) AND (msgId IN (SELECT msgId FROM MailAssignments WHERE forTeam='team01' ) )";
当两个表之间似乎有明确的联接时,为什么坚持使用子查询和子句?你试过这个吗?
SELECT TOP 10 Mails.*
FROM Mails left join
MailAssignments On Mails.msgID = MailAssignments.msgID
WHERE Mails.msgId < ? AND MailAssignments.forTeam = 'team01'