采用:
SELECT t.id,
t.variety,
(SELECT COUNT(*) FROM TABLE WHERE id < t.id) +1 AS NUM
FROM TABLE t
这不是理想的方式,因为将对返回的每一行执行num值查询。更好的主意是创建一个NUMBERS
表,其中的一列包含一个从一个开始的数字,然后递增到一个非常大的数字,然后NUMBERS
以类似于下面的变量示例的方式联接和引用该表。
您可以定义一个变量以获得伪行号功能,因为MysqL没有任何排名函数:
SELECT t.id,
t.variety,
@rownum := @rownum + 1 AS num
FROM TABLE t,
(SELECT @rownum := 0) r
如果这样做,将会收到1351错误,因为由于design,您无法在视图中使用变量。该错误/功能的行为记录在这里。