SQL - 选择具有最大值的所有行

ryy*_*yst 7 mysql sql greatest-n-per-group

我有这个SQL查询:

SELECT id, COUNT(*) AS price
FROM (SELECT * FROM rt WHERE somecondition) AS st
      JOIN tt
      ON st.id = tt.id
GROUP BY id;
Run Code Online (Sandbox Code Playgroud)

现在,我想选择具有该表最高价格的所有行.我试过这个,遗憾的是根本没有返回任何行:

SELECT id, COUNT(*) AS price
FROM (SELECT * FROM rt WHERE somecondition) AS st
      JOIN tt
      ON st.id = tt.id
GROUP BY id
HAVING price = MAX(price);
Run Code Online (Sandbox Code Playgroud)

我有点失落,有没有人有任何指针?

Nik*_*aul 0

HAVING用于在聚合发生后检查条件。

WHERE在聚合发生之前使用。

SELECT id, COUNT(*) AS price
FROM (SELECT * FROM rt WHERE somecondition) AS st
  JOIN tt
  ON st.id = tt.id
WHERE price = (SELECT MAX(price) FROM ...table)
GROUP BY id
Run Code Online (Sandbox Code Playgroud)

  • `WHERE Price = MAX(price)` 永远不会起作用。max() 是单值函数,不能直接在 SQL 的 WHERE 子句中使用。 (2认同)