从客户订单中选择排名前3*的用户不工作

slhcrj9b  于 2021-06-20  发布在  Mysql
关注(0)|答案(4)|浏览(249)

我需要找到前三名的分数,我用的是top子句,但它不工作,抛出非法语句错误,我用的是mysql版本5.7.*。
我做错了什么。根据不同的例子,我认为我的sql语法是正确的。是版本问题吗?
编辑:实际查询

select top 3 * from customers order by user_score;

请看下面的链接,它演示了top子句https://www.tutorialspoint.com/sql/sql-top-clause.htm

c2e8gylq

c2e8gylq1#

你需要使用 LIMIT 而不是 TOP ,因为 TOP 在mysql上是不可能的 SELECT :

SELECT * 
FROM customers 
ORDER BY user_score DESC 
LIMIT 3

demo:https://www.db-fiddle.com/f/qvlm7846atfwyqwemzwiyc/1
tutorialspoint.com上的文章也提到了 TOP 子句不适用于所有数据库:
注意− 所有数据库都不支持 TOP 条款。例如mysql支持 LIMIT 子句在oracle使用 ROWNUM 命令获取有限数量的记录。
你可以试试这个 TOP tsql/mssql条款:

SELECT TOP 3 * 
FROM customers 
ORDER BY user_score DESC

demo:http://sqlfiddle.com/#!18/6ad9c/1/0型

3bygqnnd

3bygqnnd2#

对于sql server:

SELECT * FROM Customers ORDER BY user_score ROWNUM <=3
4jb9z9bj

4jb9z9bj3#

对于mysql,您需要使用limit而不是top。
尝试以下方法;

SELECT 
    *
FROM
    Customers
ORDER BY user_score
LIMIT 3
kcwpcxri

kcwpcxri4#

你需要在你的排序中使用limit和desc,因为你想要前三名的最高分数,如果你需要最低的asc。 SELECT * FROM Customers ORDER BY user_score DESC LIMIT 3

相关问题