【发布时间】:2021-11-27 00:38:35
【问题描述】:
我有以下疑问:
SELECT DISTINCT
MIN(re1.name, re2.name) AS name1,
MAX(re1.name, re2.name) AS name2
FROM Rating ra1 JOIN Reviewer re1
ON re1.rID = ra1.rID
CROSS JOIN
Reviewer re2 JOIN Rating ra2 ON re2.rID = ra2.rID
WHERE ra1.mID = ra2.mID
AND re1.rID != re2.rID
AND re1.rID > re2.rID
ORDER BY name1, name2;
当我在当前使用的学习平台(使用 sqlite)中运行查询时,它会按字母顺序计算耦合名称列表。
但是,如果我在 x86_64 上使用 mysql Ver 8.0.26 for Linux 在 vscode 中运行相同的查询 我收到以下错误:
您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 ', re2.name) AS name1, MAX(re1.name, re2.name) AS name2 FROM Rating ra1' 附近使用正确的语法
mysql 中的 MIN MAX 使用方式不同吗?如何使用 mysql 运行相同的查询?
谢谢
【问题讨论】:
-
MIN()和MAX()聚合行,而不是列。因此,它们接受单个参数。 -
2) 错误信息是正确的。
-
3) 你想做什么?!? minimal reproducible example 会有所帮助。
-
我想主要问题是为什么这个相同的查询在 sqlite 中运行并获取显示的列表以及为什么它在 mysql 中出现错误
-
@goldenfish:同样的问题可能适用于
2CV和Mercedes 500 sel coupe。两者都是汽车,但不同的汽车。 MySQL 和 SQLite 也是不同的数据库。