gpt4 book ai didi

php - 如何在使用 JOIN 语句时按两个表中都存在的字段对行进行排序

转载 作者:行者123 更新时间:2023-11-29 12:15:59 24 4
gpt4 key购买 nike

主表:“帖子”。
结构:

id || text || time || user_id


辅助表:“喜欢”。
结构:

id || post_id || time || user_id


这里,第二个表中的 post_id 可以(且必须)是第一个表中的 ID。我正在运行一个查询,从特定 user_id 的 posts 表中获取所有 ID,并从特定 user_id 的 Like 表中获取所有 POST_ID。这是查询:

SELECT p.id FROM posts p 
LEFT JOIN likes l ON p.id=l.post_id
WHERE p.user_id=$userid OR
l.user_id=$userid

两个表上的时间字段都是数字,类型为int(12)。 Unix时间戳存储在这里,例如1234567890。我想按两个表上的时间字段对要获取的数据进行排序。

例如,posts表中有2个帖子,ID为1的帖子的时间值为1234567891,ID为2的帖子的时间值为1234567896。likes表中有1个ID为3的帖子,时间值为1234567896 1234567893。

我想按时间对行进行排序,如下所示:

帖子 ID 1、帖子 ID 3、帖子 ID 2。

由于帖子 ID 3 发生在帖子 ID 2 之前。我该如何处理它,因为时间及其值可以在任一表中。

谢谢!

最佳答案

连接后,您有两个时间列,每个表一个。您需要为 SQL 提供一些逻辑以用于按两者排序 - 例如,按 MAX(l.time,p.time) 排序,以较大者为准。

基本上,当您说“我想按两个表上的时间字段对我获取的数据进行排序”时,您需要更清楚地定义它,然后就可以直接执行您想要的操作。尝试考虑一下您将如何手工完成,或者您将如何指导某人手工完成 - 如果您只是将这些记录递给他们纸上并说“按两组数据中的时间字段排列这些记录” “,他们不知道该怎么做 - MySQL 也不知道!

关于php - 如何在使用 JOIN 语句时按两个表中都存在的字段对行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29803522/

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