gpt4 book ai didi

mysql - 从两个表中选择行,其中一个字段不得重复

转载 作者:行者123 更新时间:2023-11-29 13:48:09 25 4
gpt4 key购买 nike

我有两个表:

表_A:id |文件

表_B:id |文档 ID |已批准 |公共(public)|发布时间 |版本

现在table_B的docs_id就是table_A的id。

我想获取最后 20 个条目的 ID 和文件(按发布时间降序排列)。我的问题是,table_B 中有几行,其中唯一不同的(除了发布时间)是版本。所以我只想获取最新版本。

SELECT d.* FROM docs d LEFT JOIN doc_versions dv ON d.id = dv.docs_id WHERE dv.approved='1' AND dv.public='1' ORDER BY publish_time DESC LIMIT 0,20

我怎样才能改进这个查询,这样我就不会得到重复的结果?不同不起作用,因为由于版本字段的原因,行不完全相同(因为我不计算publish_time时间戳中的秒数,所以可能有一行publish_time等于另一行但版本不同。 .)

最佳答案

好吧,您的查询没有从版本中返回任何内容,因此您可以执行以下操作:

SELECT d.*
FROM docs d LEFT JOIN
doc_versions dv
ON d.id = dv.docs_id
WHERE dv.approved='1' AND dv.public='1'
group by d.doc_id
ORDER BY max(publish_time) DESC
LIMIT 0,20

唯一的问题似乎是 order by 子句。如果最新版本具有最新的publish_time,那么这将具有正确的排序(以及因此的选择)。

关于mysql - 从两个表中选择行,其中一个字段不得重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17112119/

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