如何在MySQL中使用set @变量?

时间:2019-04-09 12:19:55

标签: mysql

我想将选择列表设置为变量并对其进行一些条件检查:
这是我的无效代码:

set @temp = (select docId from table_1);
SELECT 
   id,
   CASE when id IN (@temp) then 'TRUE' else 'FALSE' end as visited
FROM table_2;

也尝试过:

set @temp = (select docId from table_1);
SELECT 
   id,
   CASE when (FIND_IN_SET(id,@temp)=1) then 'TRUE' else 'FALSE' end as visited
FROM table_2;

在两种情况下,每行的访问列都为FALSE。

1 个答案:

答案 0 :(得分:1)

您可以将LEFT JOINGROUP BY一起使用。左连接可能会导致对应于table_2的行重复(因为table_1中的相同id值可能有多行);为了解决这个问题,我们将使用Group ByCount()函数可用于确定table_1中是否存在id,并因此确定TRUE / FALSE。

尝试以下操作:

SELECT 
   t2.id,
   CASE WHEN t1.docId IS NOT NULL THEN 'TRUE' ELSE 'FALSE' END AS visited
FROM table_2 t2
LEFT JOIN table_1 t1 ON t1.docId = t2.id