针对where条件问题的子查询
我不知道如何更好地说出这个名字或者说这个词,这会导致我的search被扭曲。
我有这个声明,这是有效的。
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列(s)
原因是我需要它来抓取最新的/最近的一排进行search时,与第一个,这不是这样做,这是造成问题。 第二个查询,我只需要该语句的ip工作,但我需要它通过posted_at降序分组,因此它抓住最新的职位。
编辑:内部查询的数据库示例:
我认为你应该用ORDER BY子句replace“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;
未经testing,但应该只返回ip(一列),并只有一个logging(适应ASC / DESC)相应的你正在寻找