这有效:
SELECT DISTINCT(id), 4 FROM table
这会返回错误:
SELECT 4, DISTINCT(id) FROM table
错误讯息:
SQL错误(1064):您的SQL语法中有错误;检查 手册,对应右边的MySQL服务器版本 在' DISTINCT(id)FROM table'附近使用的语法在第1行
为什么?
答案 0 :(得分:2)
" @ Fred-ii-看来你的评论应该是一个答案。 - Francisco R"
根据OP的要求:
手册'语法是特定的:
因为它没有表明你可以在DISTINCT之前放置任何东西。
选择
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[MAX_STATEMENT_TIME = N]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
DISTINCT:
SELECT DISTINCT c1, c2, c3 FROM t1
WHERE c1 > const;
修改强>
Zev Spitz在评论中提出了一些有用的观点:
我猜测,但也许是SELECT DISTINCT(id),4 FROM表相当于SELECT DISTINCT id,4 FROM table。这表明,如果你真的有一个强烈的愿望使用带括号的DISTINCT,你可以编写SELECT DISTINCT(4),id FROM table。
和
OP希望id为秒。但我的观点是括号对DISTINCT没有影响,因为DISTINCT不是函数。
在(我)对此的回应中:
SELECT DISTINCT(id),4会先将id排序,而不是SELECT DISTINCT(4),这会将id排在第二位。
因此,如果查询是返回id(排序)秒,那么可以使用以下查询来实现此目的:
SELECT DISTINCT (4), id FROM table
的差异:
SELECT DISTINCT(id), 4 FROM table
以下两者都产生相同的结果,有或没有括号:
SELECT DISTINCT (4), id FROM table
和
SELECT DISTINCT 4, id FROM table