尝试使用 IF EXISTS 自动选择从哪个表中选择记录。
我刚收到以下错误消息和下面的代码。
我哪里错了?
IF EXISTS (SELECT 1 FROM Users WHERE Reference='USR00000007')
SELECT * FROM Users WHERE Reference='USR00000007'
ELSE
SELECT * FROM Staff WHERE Reference='USR00000007';
错误:#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的“IF EXISTS (SELECT 1 FROM Users WHERE Reference='USR00000007') SELECT * FROM'附近使用的正确语法
问题出在MySQL。 IF
- 作为控制流 - 仅适用于存储过程、存储函数和触发器等编程 block 。
假设两个表中的列相同,您可以在单个查询中执行您想要的操作:
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')
我是一名优秀的程序员,十分优秀!