mysql - 将 IN 语句内的 SELECT 语句中的列用于主查询

标签 mysql sql

这是我的查询:

SELECT id
FROM users
WHERE (id IN (
   SELECT user_id
   FROM messages
   WHERE recipient_id='$my_user_id' ORDER BY time DESC)
  OR id IN (
   SELECT recipient_id
   FROM messages
   WHERE user_id='$my_user_id' ORDER BY time DESC))

我收到消息/向其发送消息的人员列表出现,但它们没有正确排序。我希望新邮件收件人位于顶部,而旧邮件收件人位于底部。我该怎么做?

最佳答案

SELECT u.id 
FROM users u
JOIN messages m on m.recipient_id = u.id 
                or m.user_id = u.id
WHERE u.id = '$my_user_id' 
ORDER BY m.time DESC

关于mysql - 将 IN 语句内的 SELECT 语句中的列用于主查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29587978/

相关文章:

mysql - MDX 过滤器级别成员

通过重新启动修复加载数据 infile 的 MySQL 错误?

php - 查明该列是否支持 mysqli 中的 "Null"值

MYSQL IN替代

asp.net - 迁移对 ASP.NET 的 Access

mysql - Insert into、select 和 where 语句组合

php - 在php中打印递归列表

php - 将大量数据/SQL 写入文本文件的最安全方法是什么?

mysql - String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 的大小是多少?

mysql - 我无法编辑另一个表在 mysql 中具有外键的表