我不明白为什么这个查询是错误的。我单独尝试了 true 和 false 查询并且它有效,但是当我将它们放在 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 的条目。
最佳答案
我通过这个查询得到了它。无论如何,谢谢:)
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);
关于mysql - 操作数应包含 1 列 if 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52407677/