您可以使用MySQL用户变量记住结果,而不必将其存储在客户端中的临时变量中。 (见第10.4节“用户自定义变量”。)
例如,要找到最高和最低价格的文章,您可以这样做:
mysql>SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
mysql>SELECT * FROM shop WHERE price=@min_price OR price=@max_price;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
注意
还可以将数据库对象(例如表或列)的名称存储在用户变量中,然后在SQL语句中使用此变量;然而,这需要使用准备好的语句。有关详细信息,请参见第14.5节“准备的SQL语句语法”。
===来自评论区===
请记住,如果使用用户变量,则在服务器上使用查询缓存选项时,查询将不被缓存,因此答案可能会比我们预期的慢。