【问题标题】:how to order resultset based on fields from two tables如何根据两个表中的字段对结果集进行排序
【发布时间】:2014-01-27 13:26:28
【问题描述】:

我有两张表,一张用于 topic_likes,一张用于 user_cmets。我必须从这张表中获取最近更新的喜欢和评论。下面是 sql:-

SELECT (required fields...)
LEFT JOIN  topic_likes AS TL ON (TL.delete_status=0 AND TL.user_id!=$user_id)
LEFT JOIN  user_comments AS UC ON (UC.delete_status=0 AND UC.user_id!=$user_id)
WHERE
   (TL.created_date >= '$lastLogin' OR UC.created_date >= '$lastLogin' 
ORDER BY UC.created_date desc,TL.created_date desc
LIMIT $limit 

我已按两个表中的两个字段排序(UC.created_date,TL.created_date) 但它不会根据 topic_likes 中的 created_date 对结果集进行排序。它仅根据 user_cmets 表对结果进行排序

但如果我删除了限制条件,它会给出正确的结果......!!

任何建议表示赞赏

【问题讨论】:

    标签: php mysql sql cakephp-1.3


    【解决方案1】:

    这是您采用的一种奇怪的方法。如果您想使用单个查询显示用户的喜欢和 cmets,您应该 UNION 结果。示例:

    SELECT * FROM
    (
        SELECT id, `date`, 'like' as `type` FROM topic_likes
        UNION 
        SELECT id, `date`, 'comment' as `type` FROM user_comments
    ) a order by a.date DESC limit 5;
    

    结果应该是这样的:

    但是有一些限制。每个子查询的列数必须匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 2022-07-06
      • 2016-07-03
      • 2015-10-17
      • 2011-08-13
      • 1970-01-01
      相关资源
      最近更新 更多