Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql In子句语法查询错误_Sql - Fatal编程技术网

Sql In子句语法查询错误

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

我想从数据库中的messages表中提取单个用户的消息,我编写的查询有一些语法问题,但我不知道如何修复它。请帮忙

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