Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在sql中设置变量并在select查询中使用它来显示和执行对该变量的操作(最大-最小)?_Mysql_Sql_Mysql Workbench - Fatal编程技术网

Mysql 如何在sql中设置变量并在select查询中使用它来显示和执行对该变量的操作(最大-最小)?

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

下面是我正在尝试运行的MySQL查询。所以基本上我需要为当前日期和上次访问之间的差异设置一个变量。这个变量我需要在第二次查询中使用这个变量来显示它,或者执行诸如MAX(@last_visted)或MIN(@last_visted)等操作


您不需要变量,只需动态计算即可:

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