操作数应包含1列if子句

vawmfj5a  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(326)

我不明白为什么这个问题是错误的。我单独尝试了真查询和假查询,结果都成功了,但是当我把它们放在if子句中时,却没有成功。提前感谢您的帮助:)

SELECT 
IF ( 
    (SELECT useronline FROM wp_livechat ORDER BY id DESC LIMIT 1) = 1
    , 
    (SELECT *
     FROM wp_livechat
     WHERE id >= (SELECT id 
                  FROM wp_livechat
                  WHERE useronline = 0
                  ORDER BY id DESC
                  LIMIT 0, 1)
     AND id <= (SELECT id 
                FROM wp_livechat
                WHERE useronline = 1
                ORDER BY id DESC
                LIMIT 0, 1)
    ),
    (SELECT *
     FROM wp_livechat
     WHERE id >= (SELECT id 
                  FROM wp_livechat
                  WHERE useronline = 0
                  ORDER BY id DESC
                  LIMIT 1, 1)
     AND id <= (SELECT id 
                FROM wp_livechat
                WHERE useronline = 0
                ORDER BY id DESC
                LIMIT 0, 1)
    )
);

编辑:这是表格:https://ibb.co/huri6e
我想获取从最后一个useronline=0到最后一个useronline=0的消息。如果最后一个条目是useronline=1,那么我想从useronline=1的最后一个条目到useronline=0的最后一个条目检索消息。

r7s23pms

r7s23pms1#

我是通过这个查询得到的。无论如何,谢谢:)

SELECT *
FROM wp_livechat
WHERE ID > (
    SELECT IF ( 
    (SELECT useronline FROM wp_livechat ORDER BY ID DESC LIMIT 1) = 1,
        (SELECT ID 
        FROM wp_livechat
        WHERE useronline = 0
        ORDER BY id DESC LIMIT 0, 1)
    ,
        (SELECT ID 
        FROM wp_livechat
        WHERE useronline = 0
        ORDER BY id DESC LIMIT 1, 1)
    )
)
AND ID <= (SELECT ID FROM wp_livechat WHERE useronline = 1 ORDER BY ID DESC LIMIT 1);

相关问题