WHERE子句中的MySQL用户定义变量

时间:2010-10-21 03:14:45

标签: mysql where-clause

我想知道是否有办法在WHERE子句中使用用户定义的变量,如下例所示:

SELECT id, location, @id := 10 FROM songs WHERE id = @id

此查询运行时没有错误,但无法按预期工作。

4 个答案:

答案 0 :(得分:20)

与Mike E.提议的距离不远,但有一条声明:

SELECT id, location FROM songs, ( SELECT @id := 10 ) AS var WHERE id = @id;

我使用类似的查询来模拟MySQL中的窗口函数。例如。 Row sampling - 只是在同一语句中使用变量的一个例子

答案 1 :(得分:10)

来自User Defined Variables上的MySQL手册页:

  

作为一般规则,您不应该为用户变量赋值并在同一语句中读取值。您可能会得到您期望的结果,但这不能保证。

所以你应该将赋值与select语句分开:

SET @id = 10;
SELECT id, location, @id FROM songs WHERE id = @id;

答案 2 :(得分:4)

当然,但我从来没有见过有人试图设置一个变量并像你一样在同一个语句中使用它。尝试:

SET @id := 10;
SELECT @id := 10 FROM songs WHERE id = @id;

SELECT @id := 10 FROM songs;
SELECT @id := 10 FROM songs WHERE id = @id;

我已经使用过它们,它们似乎都适合我。

答案 3 :(得分:0)

这对我有用!

SET @identifier = 7;
SELECT * FROM test where identifier = @identifier;