繁体   English   中英

条件问题的子查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM