0

我正在尝试使用此查询从表中获取后 10 条记录,但没有返回任何数据。取出 where 原因并获得数据,但我必须跳过前 10 条记录才能获得我真正感兴趣的内容,并试图避免这种情况。

SET @row_number = 0; 

SELECT 
   `Ship Date`,`Order Number`,
  (@row_number:=@row_number + 1) AS rowid
FROM input_data
WHERE (@row_number>10)  
order by @row_number  
LIMIT 10;
4

2 回答 2

0

The WHERE clause cannot reference variables set in the SELECT-list. Despite the order of clauses, the expressions in the SELECT-list have not yet been evaluated as the WHERE clause is filtering rows.

I think you want:

SELECT `Ship Date`, `Order Number` FROM input_data
ORDER BY ...something, I don't know what...
LIMIT 10 OFFSET 10;

Or if you use MySQL 8.0, and can use window functions:

SELECT `Ship Date`, `Order Number`
FROM (
  SELECT `Ship Date`, `Order Number`, 
    ROW_NUMBER() OVER (ORDER BY ...something...) AS rownum
  FROM input_data) AS t
WHERE rownum BETWEEN 10 AND 20;
于 2021-08-26T22:26:15.790 回答
0

试试这个,您需要将查询包装到外部选择中,以便评估 rowid

SET @row_number = 0; 
select * from (
SELECT 
   `Ship Date`,`Order Number`,
  (@row_number:=@row_number + 1) AS rowid
FROM input_date ) A
WHERE A.rowid>1  
order by rowid
LIMIT 10;
于 2021-08-26T22:41:07.333 回答