MySQL user-defined variable in WHERE clause

前端 未结 4 1260
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-18 19:20

I want to know if there is a way to use a user-defined variable in WHERE clause, as in this example:

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


        
相关标签:
4条回答
  • 2020-12-18 19:41

    Sure, but I've never seen anyone try to set a variable and use it in the same statement like you are. Try:

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

    or

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

    I've used both, and they both seem to work for me.

    0 讨论(0)
  • 2020-12-18 19:43

    This worked for me!

    SET @identifier = 7;
    SELECT * FROM test where identifier = @identifier;
    
    0 讨论(0)
  • 2020-12-18 19:47

    From the MySQL manual page on User Defined Variables:

    As a general rule, you should never assign a value to a user variable and read the value within the same statement. You might get the results you expect, but this is not guaranteed.

    So you should separate the assignment from the select statement:

    SET @id = 10;
    SELECT id, location, @id FROM songs WHERE id = @id;
    
    0 讨论(0)
  • 2020-12-18 19:52

    Not far from what Mike E. proposed, but one statement:

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

    I used similar queries to emulate window functions in MySQL. E.g. Row sampling - just an example of using variables in the same statement

    0 讨论(0)
提交回复
热议问题