Mysql where条件问题的子查询
我不知道如何更好地命名或使用这个词,这导致我的搜索出现偏差 我有这样一个说法,它是有效的Mysql where条件问题的子查询,mysql,node.js,Mysql,Node.js,我不知道如何更好地命名或使用这个词,这导致我的搜索出现偏差 我有这样一个说法,它是有效的 SELECT username , ip FROM database.users WHERE ip = (SELECT ip FROM database.users_chat_history WHERE username = ? limit 1); 但是,我需要这样的东西,这是不允许的: SEL
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\操作数\列:操作数应包含1列
原因是我需要它在进行搜索时抓取最新/最新的行,而对于第一行,它没有这样做,这导致了问题。第二个查询,我只需要ip来让语句工作,但我需要它在降序时按posted_分组,以便它获取最新的post
编辑:
内部查询的数据库示例:
我认为你应该用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);
我认为你应该用ORDERBY子句代替GROUPBY。见下文:
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),以符合您要查找的内容
SELECT ip FROM database.users_chat_history WHERE username = ? ORDER BY posted_at ASC LIMIT 1;
未测试,但应仅返回ip(一列)和一条记录(调整ASC/DESC),以符合您所查找的内容您未使用聚合功能。。那么,为什么在select中使用group by呢。?。试着解释一下你的目标是什么。。最终用一个合适的数据样本更新你的问题,在desc发布的预期结果会给你最新的记录更新了样本,但有人在下面回答了。你没有使用聚合函数。。那么,为什么在select中使用group by呢。?。试着解释一下你的目标是什么。。最终用一个合适的数据样本更新你的问题,预期的resultorder通过在desc发布将给你最新的记录更新了样本,但有人在下面回答了它。谢谢,这回答了它。很高兴它有帮助。谢谢,这回答了它。很高兴它有帮助。这同样有效(显然,是相同的代码),只是没有完成完整的查询,这就是为什么我选择了另一个答案作为解决我问题的答案,以防万一有人在未来的搜索中出现这个问题。谢谢你的帮助,我很感激!这同样有效(显然,是相同的代码),只是没有完成完整的查询,这就是为什么我选择另一个答案作为解决我问题的答案,以防万一将来有人搜索时会出现这个问题。谢谢你的帮助,我很感激!