mysql - 如何让MySQL知道顺序查询引起的ID?

标签 mysql numbers row

在下面的查询中,“id1”和“id2”都是未知的,无论我将它们更改为“myTable.id1”或“r1.id1”或“r2.id1”:

SELECT      @n:=@n+1 AS id1,myTable.originalID,myTable.name,myTable.place
FROM        (myTable, (SELECT @n:=0) r1)
LEFT JOIN   (SELECT @i:=@i+1 AS id2,originalID,name,place FROM (myTable, (SELECT @i:=0) r2) WHERE originalID!=12) secondTable
ON          id1=id2;

我能做什么?

最佳答案

它们是未知的,因为查询中唯一已知的列(作为一般规则)是 from 子句中的列。您在 select 子句中定义它们。尝试将变量放入子查询中,例如:

select *
from (select @n := @n + 1 AS id1, mt.originalID, mt.name, mt.place
      from myTable mt cross join
           (select @n := 0) const
    ) t1 left join
    (SELECT @i := @i + 1 AS id2, originalID, name, place
     FROM myTable cross join
          (SELECT @i:=0) r2
     WHERE originalID <> 12
    ) secondTable
    ON t1.id1 = secondtable.id2;

关于mysql - 如何让MySQL知道顺序查询引起的ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21760856/

相关文章:

python - 如何在Python中每四位用逗号格式化一个数字?

c - 在c中获取文件文本的行数

c# - 在使用c#导入datagridview之前根据单元格值删除一些行

r - 更改 data.frame 中的单行名称

mysql - 使用 select 子句更新 mysql 作为更新值

PHP mysql 插入日期格式

java - 如何在Android应用程序中只制作一次随机数?

php - 更新数据库中的多条记录,使其值(value)不断增加

php - 通过引用传递 PDO 连接对象?

java - 无论索引如何,最后一行始终从 DefaultTableModel 中删除