[英]Subquery for a where condition issue
我不知道如何更好地命名或说出这一点,这导致我的搜索倾斜。
我有这个声明,它有效。
SELECT username
, ip
FROM database.users
WHERE ip = (SELECT ip
FROM database.users_chat_history
WHERE username = ?
limit 1);
但是,我需要这样的东西,这是不允许的:
SELECT username
, ip
FROM database.users
WHERE ip = (SELECT ip
, posted_at
FROM database.users_chat_history
WHERE username = ?
group
by posted_at desc
limit 1);
错误:ER_OPERAND_COLUMNS:操作数应包含1列
原因是我在进行搜索时需要它来获取最新/最近的行,并且在第一行时,它不会这样做,这会导致问题。 第二个查询,我只需要ip语句才能工作,但我需要它按sent_at降序分组,以便抓取最新的帖子。
我认为你应该用ORDER BY子句替换“group by”。 见下文:
SELECT username, ip FROM database.users WHERE ip = (SELECT ip FROM database.users_chat_history WHERE username = ? ORDER BY posted_at desc limit 1);
我会为子查询做类似的事情:
SELECT ip FROM database.users_chat_history WHERE username = ? ORDER BY posted_at ASC LIMIT 1;
未经测试但应仅返回ip(一列),并且仅根据您要查找的内容返回一条记录(适应ASC / DESC)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.