php - 如何根据两个表中的字段对结果集进行排序

标签 php mysql sql cakephp-1.3

我有两个表,一个用于 topic_likes,一个用于 user_comments。我必须从这个表中获取喜欢和评论的最新更新。下面给出的是 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_comments 表对结果进行排序

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

感谢任何建议

最佳答案

您采用的方法很奇怪。如果您想使用单个查询显示用户的喜欢和评论,您应该 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;

结果应该是这样的:

Result

但也有局限性。每个子查询的列数必须匹配。

关于php - 如何根据两个表中的字段对结果集进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21012702/

相关文章:

sql - 在 django raw sql 中传递列表或元组作为参数

php - 使用自定义 php mysql 查询从 wp 元值获取值

php - 如果用户不接受付款,请在 5-10 分钟后取消设置 session 。 PHP

php - 更新时如何从yii2中的数组对象设置多选值

mysql - laravel 5.2 在运行迁移时无法创建外键

mysql - DB2 使用日期和时间显示用户的最新行记录

mysql - 从共享公共(public)字段的 4 个表中获取数据

PHP:使用 urldecode 和 mcrypt 时 JSON 不工作

mysql - 500,000,000 条记录,int 字段时间戳索引,mysql 会通过这个查询处理搜索吗?

mysql DATE 数据类型没有取正确的值