我希望将select列表设置为变量,并对其执行一些条件检查:
这是我的代码,不起作用:
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;在这两种情况下,访问的列对于每一行都是假的。
发布于 2019-04-09 13:38:26
您可以将LEFT JOIN与GROUP BY一起使用。左联接可能导致与table_2相对应的重复行(因为table_1中可能有多行用于相同的id值);要处理这个问题,我们将使用Group By。Count()函数可用于确定id是否存在于table_1中,并据此确定真假。
尝试以下几点:
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 https://stackoverflow.com/questions/55592725
复制相似问题