Leo*_*los 4 mysql variables temporary where where-clause
在MySQL中,可以在WHERE子句中使用临时变量吗?
例如,在以下查询中:
SELECT `id`, @var := `id` * 2 FROM `user`
Run Code Online (Sandbox Code Playgroud)
@var成功设置为`id`值的两倍
但是,如果我尝试将结果集过滤为仅包含@var小于10的结果:
SELECT `id`, @var := `id` * 2 FROM `user` WHERE @var < 10
Run Code Online (Sandbox Code Playgroud)
然后我没有结果.
如何根据@var的值过滤结果?
Bar*_*mar 14
您需要分配别名,并在HAVING子句中对其进行测试:
SELECT id, @var := id * 2 AS id_times_2
FROM user
HAVING id_times_2 < 10
Run Code Online (Sandbox Code Playgroud)
请注意,如果您只是使用公式进行过滤,而不是将内部结果从一行传递到下一行,则根本不需要变量.你可以写:
SELECT id, id * 2 AS id_times_2
FROM user
HAVING id_times_2 < 10
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11613 次 |
| 最近记录: |