我在下面的简化SQL代码中遇到错误,我需要您的帮助来解决它。
SELECT user
FROM Table1
WHERE
user = IF( CURRENT_USER() in (select name from Table2) , user, CURRENT_USER() )
函数CURRENT_USER()返回进入我正在创建的仪表板的用户的名称。
所以基本上,如果当前用户列在Table2的名称列中,我想从Table1返回用户名列表。如果未列出,则仅返回当前用户的姓名。
我收到此错误:
半连接表达式(即“x IN(SELECT ...)”)必须是逻辑AND的一部分。
我很感激任何帮助。
谢谢!
答案 0 :(得分:1)
如果我理解正确
SELECT user
FROM Table1
WHERE CURRENT_USER() in (select name from Table2)
OR user = CURRENT_USER()
当Table1
中出现CURRENT_USER()
时,这将返回Table2
的所有行。
如果您想在Table1
中出现CURRENT_USER()
时限制来自Table2
的数据,那么
SELECT user
FROM Table1
WHERE (CURRENT_USER() in (select name from Table2) and some_col = 'some_condition')
OR user = CURRENT_USER()
更新:
试试这个语法
SELECT user
FROM Table1
WHERE EXISTS (select 1 from Table2 where name = CURRENT_USER())
OR user = CURRENT_USER()