Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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
Php 从某物中选择,选择案例,然后进行比较_Php_Sql - Fatal编程技术网

Php 从某物中选择,选择案例,然后进行比较

Php 从某物中选择,选择案例,然后进行比较,php,sql,Php,Sql,我想知道数据库中的用户状态是否已更改 我这里有这个密码 SELECT `users`.`status`,`users`.`id_user`, (SELECT CASE WHEN `timestamp` >= "2013-11-20 15:30:36" THEN 2 WHEN `timestamp` >= "2013-11-20 15:30:51" THEN 1

我想知道数据库中的用户状态是否已更改

我这里有这个密码

SELECT `users`.`status`,`users`.`id_user`,
(SELECT CASE 
            WHEN `timestamp` >= "2013-11-20 15:30:36" 
                THEN 2
            WHEN `timestamp` >= "2013-11-20 15:30:51" 
                THEN 1
            ELSE 0
            END AS `status1`
            FROM `users_actions` as `users_actions`

            ORDER BY `timestamp` DESC
            LIMIT 1) as `status1`
FROM `users` as `users` WHERE id_user IN (5,22) 
    AND `users`.`status` != `users`.`status1`
它给了我这个错误 “where子句”中的未知列“users.status1”


我的问题是如何将临时元素与列进行比较

子查询的别名为status1,而case语句的别名为status1,因此要在子查询之外引用该字段,它将是status1.status1,而不是user.status1

更新11/21/2013


我使用您创建的别名更新了您的查询,以确保一切正常。如果不打算使用别名,为什么要创建别名?我还重新排列了FROM语句,看看这是否解决了问题。

如何将用户链接到时间戳?结束后是否需要AS状态1?我不认为作为用户的用户会做任何事情。是的,它不会做任何事情,但我尝试了很多我忘记的事情来去掉sry:D。。但是我如何才能让sql以某种方式工作呢?它不工作,我将最后一行改为和users.status!=status1.status1,它在“where子句”中为我提供未知列“status1.status1”
SELECT users.status,
users.id_user,
status1.status1
FROM users as users
,(SELECT CASE 
        WHEN users_actions.timestamp >= "2013-11-20 15:30:36" 
            THEN 2
        WHEN users_actions.timestamp >= "2013-11-20 15:30:51" 
            THEN 1
        ELSE 0
        END AS status1
        FROM users_actions as users_actions
        ORDER BY users_actions.timestamp DESC
        LIMIT 1) as status1
WHERE users.id_user IN (5,22) 
AND users.status != users.status1