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

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

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

select top 3 * from customers order by user_score;

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

bkkx9g8r

bkkx9g8r1#

对于sql server:

SELECT * FROM Customers ORDER BY user_score ROWNUM <=3
qlckcl4x

qlckcl4x2#

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

lnlaulya

lnlaulya3#

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

SELECT 
    *
FROM
    Customers
ORDER BY user_score
LIMIT 3
utugiqy6

utugiqy64#

你需要使用 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型

相关问题