我有一个在where子句中使用变量的查询:
SET @id = 1;
SELECT
id,
value
FROM myTable
WHERE id = @id;
我想运行@id
值1到100的查询,然后将所有循环结果联合(或以某种方式组合)到一个结果集中。这在MySQL中是否可行,如果是,那么什么是好方法?
答案 0 :(得分:1)
为什么要使用变量呢?只需使用简单的where
子句:
select id, value
from myTable
where id between 1 and 100;
相反,如果您真的希望按行标识前100行,请使用order by
和limit
:
select id, value
from myTable
order by id
limit 100;
答案 1 :(得分:0)
只需使用子查询来获取变量。
将where
放在外面
SELECT *
FROM
(
SELECT
@rownumber := if(@rownumber, @rownumber + 1, @rownumber + 1) AS id,
value
FROM myTable
CROSS JOIN (select @rownumber := 0) r
) as T
WHERE id < 100;