我有一个包含电子邮件的表(称为邮件),我想将特定邮件标记为分配给不同的工作团队(例如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' ) )";
答案 0 :(得分:0)
为什么在看起来两个表之间有明确的连接时,你坚持使用子查询和子句?你试过这个吗?
SELECT TOP 10 Mails.*
FROM Mails left join
MailAssignments On Mails.msgID = MailAssignments.msgID
WHERE Mails.msgId < ? AND MailAssignments.forTeam = 'team01'