SQL选择IN给定集合不会缩小范围

时间:2012-03-05 14:24:36

标签: c# sql ms-access

我有一个包含电子邮件的表(称为邮件),我想将特定邮件标记为分配给不同的工作团队(例如team01,team02等)。 msg< - >团队关系保存在另一个表(称为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' ) )";

1 个答案:

答案 0 :(得分:0)

为什么在看起来两个表之间有明确的连接时,你坚持使用子查询和子句?你试过这个吗?

SELECT TOP 10 Mails.* 
FROM Mails left join 
MailAssignments On Mails.msgID = MailAssignments.msgID 
WHERE Mails.msgId < ? AND MailAssignments.forTeam = 'team01'