我尝试使用Mysql中的用户定义变量简化长时间查询。不幸的是,这些变量在where子句中的行为不符合预期-尤其是存储日期的变量。这是3个简化的查询:
SELECT id,
@var_date := `date`
FROM aroma_exchanges
WHERE @var_date >= "2000-01-01"
这将返回0行
另一个:
SELECT id,
@var_date := `date`
FROM aroma_exchanges
WHERE Str_to_date(@var_date, "%y-%m-%d") >= "2000-01-01"
这也返回0行。
SELECT id,
@var_date := `date`
FROM aroma_exchanges
WHERE `date` >= "2000-01-01"
这一行按预期工作,返回很多行。在我的情况下,date
的定义非常复杂,在我的真实查询中,我使用了几次,因此,如果我可以将同一子查询存储到一个变量中并使用它,我不想重复5-10次根据我的需要。
问题:如何使第一个或第二个查询正常工作?谢谢。