Sql In子句语法查询错误
我想从数据库中的messages表中提取单个用户的消息,我编写的查询有一些语法问题,但我不知道如何修复它。请帮忙Sql In子句语法查询错误,sql,Sql,我想从数据库中的messages表中提取单个用户的消息,我编写的查询有一些语法问题,但我不知道如何修复它。请帮忙 SELECT * FROM Messages WHERE SenderId = (SELECT UserId FROM Users WHERE ContactNo = 03005114812 ) or ReceiverId = (SELECT UserId FROM Users WHERE ContactNo = 03005114812 ) IN (SELECT
SELECT *
FROM Messages
WHERE SenderId = (SELECT UserId FROM Users WHERE ContactNo = 03005114812 )
or ReceiverId = (SELECT UserId FROM Users WHERE ContactNo = 03005114812 )
IN (SELECT * FROM Messages WHERE SenderId = 1 or ReceiverId = 1)
它遗漏了一些东西
WHERE SenderId = (SELECT UserId FROM Users WHERE ContactNo = 03005114812 )
or ReceiverId = (SELECT UserId FROM Users WHERE ContactNo = 03005114812 )
<missing expression here> IN (SELECT * FROM Messages WHERE SenderId = 1 or ReceiverId = 1)
不需要IN()
搜索
SELECT *
FROM Messages
WHERE
(SenderId = (SELECT UserId FROM Users WHERE ContactNo = 03005114812 ) and
ReceiverId = 1) or
(ReceiverId = (SELECT UserId FROM Users WHERE ContactNo = 03005114812 ) and
SenderId = 1)
或者:
SELECT m.*
FROM Messages m
INNER JOIN
Users u
on
(m.SenderId = u.UserId and m.ReceiverId = 1) or
(m.ReceiverId = u.UserId and m.SenderId = 1)
WHERE
u.ContactNo = 03005114812
感觉它的重复性少了一点。你想找到什么?用户1和联系人编号为03005114812的用户之间的所有消息?如果不是这样,那么请添加更多关于您试图找到的内容的解释。一些示例数据和预期结果不会有任何影响。@Damien_不信者是的,先生,我想查找用户1和ContactNo=03005114812之间的消息,先生,我不知道缺少了什么,我试了很多次,但成功了。别介意,我没有任何声誉来证明它是正确的,但我已经投了一票。谢萨洛特
SELECT m.*
FROM Messages m
INNER JOIN
Users u
on
(m.SenderId = u.UserId and m.ReceiverId = 1) or
(m.ReceiverId = u.UserId and m.SenderId = 1)
WHERE
u.ContactNo = 03005114812