gpt4 book ai didi

MySQL:如何在使用父查询 "order by"的同时使用子查询列 "order by"?

转载 作者:行者123 更新时间:2023-11-29 12:28:04 32 4
gpt4 key购买 nike

  1. 我有两张 table 。
  2. 它们都有日期和 item_id 列。
  3. 我正在通过 item_id 加入他们。
  4. 结果应按两个日期列一起排序
  5. 下面的代码有效,生成正确的结果集...
  6. 但是它们仅按第一个表的日期排序

代码

SELECT t1.*
FROM table_one_items t1
INNER JOIN (SELECT t2.item_id,
t2.date_favorited
FROM table_two_favorites t2
WHERE t2.user_id IN( 1, 2, 3 )) t3
ON t1.item_id = t3.item_id
OR t1.user_id IN( 1, 2, 3 )
WHERE t1.published = 1
GROUP BY t1.item_id
ORDER BY t3.date_favorited DESC,
t1.date_created DESC

问题:

我正在寻找 chronological order 中的项目尽管来自一张 table 和一个subquery具有自己的日期列的表。我该如何去做呢?

我尝试过的:

我尝试移动 t3.date周围并订购 subquery本身,但这不起作用。任何修改子查询的尝试都会更改结果集,并且我想不出另一种编写它的方法来获得相同的结果但顺序正确。我知道可能有更好的方法来编写这个查询,但我也无法弄清楚。我觉得很幸运,这有效!

其他信息:

第一个表是所有项目的索引,而第二个表是“收藏夹”表,仅包含用户喜欢的项目。与t1.item_id = t3.item_id OR t1.user_id IN(1,2,3)我本质上是在 t1 中获取由这些用户制作的项目或这些用户喜欢的项目。

示例:

表一“项目表”:(日期为“创建日期”)

item_id 1 user_id 2 date_created 2015-01-1 00:00:00
item_id 2 user_id 2 date_created 2015-01-3 00:00:00
item_id 3 user_id 1 date_created 2015-01-5 00:00:00
item_id 4 user_id 3 date_created 2015-01-7 00:00:00

表二“用户收藏夹”:(日期为“收藏日期”)

item_id 2 user_id 2 date_favorited 2015-01-6 00:00:00
item_id 1 user_id 2 date_favorited 2015-01-6 00:00:00
item_id 1 user_id 3 date_favorited 2015-01-8 00:00:00

期望的结果:

item_id 3 (ordered by date_created: 2015-01-5 00:00:00)
item_id 4 (ordered by date_created: 2015-01-7 00:00:00)
item_id 2 (ordered by date_favorited: 2015-01-6 00:00:00)
item_id 1 (ordered by date_favorited: 2015-01-8 00:00:00)

当前结果:

item_id 1 (ordered by date_created)
item_id 2 (ordered by date_created)
item_id 3 (ordered by date_created)
item_id 4 (ordered by date_created)

任何帮助将不胜感激。 (我一定会标记答案!)

最佳答案

尝试在 ORDER BY 中使用 CASE 语句来选择您想要的日期,因此:

ORDER BY 
CASE
WHEN t3.date > t1.date AND t3.item_id = t1.item_id THEN t3.date
ELSE t1.date
END DESC

如果您想按两个日期中的最大值排序。但是我不确定您的子查询是否会按照您的预期进行;除非用户创建的项目始终位于 table_two 中,无论他们是否收藏它们

关于MySQL:如何在使用父查询 "order by"的同时使用子查询列 "order by"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28006986/

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