【问题标题】:MySQL - WHERE clause + JOINMySQL - WHERE 子句 + JOIN
【发布时间】:2014-07-13 15:49:53
【问题描述】:

我有以下 MySQL 查询:

SELECT user_id, score, time 
FROM tests_1 T
WHERE T.score = (
SELECT MAX(T2.score)
FROM tests_1 T2
WHERE T2.user_id = T.user_id
)
ORDER BY score DESC, time ASC;

如何在 users.user_id = tests_1.user_id 上添加“用户”表中的“用户名”列?

【问题讨论】:

标签: mysql sql subquery


【解决方案1】:

试试这个:

SELECT T.user_id, U.username, T.score, T.time 
FROM tests_1 T
JOIN users U on U.user_id = T.user_id
WHERE T.score = (
SELECT MAX(T2.score)
FROM tests_1 T2
WHERE T2.user_id = T.user_id
)
ORDER BY T.score DESC, T.time ASC;

【讨论】:

    【解决方案2】:

    加入吧。

    SELECT T.user_id, T.score, T.time, u.username
    FROM tests_1 T
    JOIN users u ON u.user_id = T.user_id
    WHERE T.score = (
    SELECT MAX(T2.score)
    FROM tests_1 T2
    WHERE T2.user_id = T.user_id
    )
    ORDER BY T.score DESC, T.time ASC;
    

    【讨论】:

      【解决方案3】:
      SELECT user_id, score, time, U.username
      FROM tests_1 T JOIN users U
          ON T.user_id = U.user_id
      WHERE T.score = (
          SELECT MAX(T2.score)
          FROM tests_1 T2
          WHERE T2.user_id = T.user_id
      )
      ORDER BY score DESC, time ASC;
      

      【讨论】:

      • 您在 ON 子句中将列与自身进行比较。其中之一应该是U
      猜你喜欢
      • 2010-11-16
      • 1970-01-01
      • 2011-07-06
      • 2021-02-15
      • 2016-05-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      相关资源
      最近更新 更多