MySQL IF EXISTS无法正常工作

时间:2016-03-21 16:13:30

标签: mysql sql if-statement exists

尝试使用IF EXISTS自动选择从哪个表中选择记录。

我只是通过以下代码获得以下错误消息。

我哪里错了?

<taSopLoAuto>

错误:#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在'IF EXISTS(SELECT 1 FROM Users WHERE Reference ='USR00000007')附近使用正确的语法。在第1行选择SELECT * FROM'

2 个答案:

答案 0 :(得分:2)

问题在于MySQL。 IF - 作为控制流 - 仅适用于编程块,如存储过程,存储函数和触发器。

假设两个表中的列相同,您可以作为单个查询执行所需的操作:

SELECT u.*
FROM Users u
WHERE u.Reference = 'USR00000007'
UNION ALL
SELECT s
FROM Staff s
WHERE s.Reference = 'USR00000007' AND
      NOT EXISTS (SELECT 1 FROM Users u2 WHERE u2.Reference = 'USR00000007')

答案 1 :(得分:0)

如果你想要两个查询的联合,那么两个字段都有相同数量的字段(如果需要,你可以添加空字段来查询),字段应该有相似的类型,所以试试这个:

SELECT Users.id as user_id, null as staff_id, some_other_number_field, some_other_char_field
FROM Users 
WHERE Reference='USR00000007'
SELECT null , Staff.id, some_other_number_field, some_other_char_field 
FROM Staff 
WHERE Reference='USR00000007'
and not EXISTS (SELECT 1 FROM Users WHERE Reference='USR00000007');

也许你需要像这样的查询,总是只获得参考用户:

SELECT * 
FROM Users 
WHERE (Reference='USR00000007'
or exists (
  SELECT 1 
  FROM Staff 
  WHERE Reference='USR00000007'
  and Staff.user_id = Users.id));

但您必须具有类似于“和Staff.user_id = Users.id”的连接条件