gpt4 book ai didi

mysql - 从具有相同外键的所有行中具有最高 ID 的表中选择所有行

转载 作者:太空宇宙 更新时间:2023-11-03 11:54:52 25 4
gpt4 key购买 nike

所以我有一个带有 author_id 外键和已发布状态 (bool) 的帖子表。

我想为作者选择所有最近(最高 ID)发布的帖子(所有具有相同 author_id 外国 ID 的帖子)。

现在我可以获得一组外键的最高值

SELECT * FROM Posts WHERE id = (SELECT MAX(id) FROM Posts WHERE  published = 1 AND author_id = 5); 

但这只会返回给定外键的最高 ID。我将如何编写此代码以返回其外键组中具有最高 ID 的所有帖子?

欢迎任何建议。谢谢

编辑:是否用 sql-server 和 mysql 标记了它。是mysql。对此感到抱歉

编辑:有些人要求澄清这是我正在寻找的示例:
id body author_id published
1 前 10 名... 1 1
2 打破... 1 1
3 新报告.. 3 1
4 防晒霜... 3 1
5 道指下跌... 2 1
6 暖心... 2 1
7 下次... 1 1
8 新研究... 3 0

所以我想做的是获取 ID 为 4、6 和 7 的帖子,因为 4 是作者 3 的最新(最高 ID),6 是作者 2 的最新,7 是作者 2 的最新作者 1。我也有 published 条件,这就是为什么我们不抓取 8,因为它是 0。


4 防晒霜... 3 1
6 暖心... 2 1
7 下次... 1 1

回答:通过添加 IN 而不是 = 来对 Igor Quirino 的答案进行轻微调整,我认为以下内容有效:

SELECT * FROM Posts WHERE id IN (SELECT MAX(id) FROM Posts WHERE published = 1 GROUP BY author_id);

最佳答案

您应该使用 IN 运算符而不是 = 运算符

IN 运算符允许您在 WHERE 子句中指定多个值。

IN 运算符是多个 OR 条件的简写。

IN Syntax
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

或:

SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT);

IN 运算符允许您使用返回多条记录的查询(您的查询必须只返回一列)

SELECT * FROM Posts WHERE id IN (SELECT MAX(id) FROM Posts WHERE published = 1 GROUP BY author_id); 

乐于助人。

关于mysql - 从具有相同外键的所有行中具有最高 ID 的表中选择所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33640303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com