针对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)相应的你正在寻找