Mysql 如何在sql中设置变量并在select查询中使用它来显示和执行对该变量的操作(最大-最小)?
下面是我正在尝试运行的MySQL查询。所以基本上我需要为当前日期和上次访问之间的差异设置一个变量。这个变量我需要在第二次查询中使用这个变量来显示它,或者执行诸如MAX(@last_visted)或MIN(@last_visted)等操作Mysql 如何在sql中设置变量并在select查询中使用它来显示和执行对该变量的操作(最大-最小)?,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,下面是我正在尝试运行的MySQL查询。所以基本上我需要为当前日期和上次访问之间的差异设置一个变量。这个变量我需要在第二次查询中使用这个变量来显示它,或者执行诸如MAX(@last_visted)或MIN(@last_visted)等操作 您不需要变量,只需动态计算即可: SELECT user_phone, DATEDIFF(CURRENT_TIMESTAMP(), MAX(date_time)) as lastvisited FROM bs_orders GROUP BY
您不需要变量,只需动态计算即可:
SELECT
user_phone, DATEDIFF(CURRENT_TIMESTAMP(), MAX(date_time)) as lastvisited
FROM
bs_orders
GROUP BY
user_phone
ORDER BY
user_phone
如果需要,可以在运行查询之前创建具有当前时间戳的变量,以便查询对所有行使用相同的时间
此外,如注释中所述,您可以创建临时表并在进一步查询中使用它:
CREATE TEMPORARY TABLE lastvisited(
SELECT
user_phone, DATEDIFF(CURRENT_TIMESTAMP(), MAX(date_time)) as lastvisited
FROM
bs_orders
GROUP BY
user_phone
ORDER BY
user_phone
);
第二个查询示例:
Select *
from TableT T
left join lastvisited L on L.user_phone=T.user_phone
我在同一代码中尝试了MAX(DATEDIFF(CURRENT_TIMESTAMP,MAX(date_time)),但它不起作用。它是给出了错误还是没有给出您想要的结果?选择用户电话,DATEDIFF(CURRENT_TIMESTAMP,MAX(date_time))作为上次访问的用户,MAX(DATEDIFF(CURRENT_TIMESTAMP,MAX(date_time)))从bs_orders GROUP BY user_phone ORDER BY user_phone我尝试了这个代码,但它给出了如下错误:错误代码:1111。组函数的使用无效我在回答中提出的查询应该会给出“自上次访问以来的时间”。如果您需要严格的最后一次访问,那么max(date\u time)应该足够了。请尝试我发布的查询;max函数只在datediff函数中需要,我丢失了。样本数据和期望的结果将清楚地表明您正在尝试做什么。
集合
完全令人困惑。不能为返回多行的查询结果设置单个值。
Select *
from TableT T
left join lastvisited L on L.user_phone=T.user_phone