2017-08-23 130 views
1
SET @userID := 1; 
SELECT 1 AS isSmoker WHERE EXISTS (SELECT SituationID 
            FROM usersituation 
            WHERE [email protected] 
             AND SituationID=3); 

SQL查询:误差WHERE EXISTS MySQL查询

SELECT 1 AS isSmoker WHERE EXISTS (SELECT SituationID 
             FROM usersituation 
            WHERE [email protected] 
             AND SituationID=3) 

MySQL表示:

1064 - 你在你的SQL语法错误;检查对应于你的MySQL服务器版本的使用权语法手册 附近“WHERE EXISTS(SELECT SituationID FROM usersituation WHERE 用户名= @用户名和”第1行

这是我收到的错误但我不知道为什么会发生。

SELECT SituationID FROM `usersituation` WHERE [email protected] AND SituationID=3 

返回一行单独使用时。

注:

查询的目的是,如果子查询返回的任何值,那么 返回一行与1名为isSmoker

+0

你已经省略了'from'子句。 –

+0

你是缺少'从' – OutOfMind

+0

事情是我不想从任何现有的列获得任何值,如果子查询是真的我只想在名为isSmoker的列中获得一行值1 – Constantine

回答

0

据我所知,如果子查询返回结果,则需要查询返回True。 试试这个:

SELECT CASE WHEN 
EXISTS (SELECT SituationID 
     FROM usersituation 
     WHERE [email protected] 
     AND SituationID=3) 
THEN '1' 
END AS isSmoker 
+0

不,我希望它返回1,意思是TRUE,简言之,如果该用户的情境ID是3,那么我想返回1,所以以后我可以用它来与其他东西进行比较 – Constantine

+0

用“检查情境表并查看用户是否具有ID = 3的情况(3是吸烟者的ID)如果是为我返回1(TRUE),我可以将它设置为一个变量(此查询)INTO @smoker,因此我可以稍后使用此变种 – Constantine

+0

好吧我编辑了答案,请尝试一下 – OutOfMind

2
SET @userID := 1; 
SELECT 1 AS isSmoker from usersituation WHERE EXISTS (SELECT SituationID FROM usersituation WHERE [email protected] AND SituationID=3); 
自定义列中的值

你可以尝试上面的代码。

这里你忘记了来自关键字。

+0

不,这不是什么我希望它做到这一点,如果子查询返回任何值,然后在名为isSmoker的自定义列中返回值为1的一行 – Constantine