在MySQL中基于IF EXISTS的条件SELECT

时间:2019-02-28 05:27:08

标签: mysql conditional where-clause

有一个表用户。基于2列数据,我需要选择行。

假设这2列是 ID ID_API

因此,在获取数据时,我需要搜索1st如果ID_API列中存在给定值,然后选择该行。 否则在WHERE条件下使用ID。

这是什么样子

IF EXISTS (SELECT * FROM users WHERE ID_API= '12345')
BEGIN
    SELECT * FROM users WHERE ID_API= '12345'
END
ELSE
BEGIN
   SELECT * FROM users WHERE ID_= '12345'
END

如何管理?

1 个答案:

答案 0 :(得分:1)

通常,您可以查找具有ID_API = 12345的行或具有ID = 12345 的行,只要不存在带有ID_API = 12345的行:

SELECT *
FROM users
WHERE ID_API = '12345' OR
      ID = '12345' AND NOT EXISTS (SELECT * FROM users WHERE ID_API = '12345')

在特殊情况下(每个用户只有一行),您可以通过搜索ID_API = 12345ID = 12345,然后按ID_API = 12345降序对结果进行排序(因为这样做会如果为true,则返回值1)并使用LIMIT 1限制为1行。

SELECT * 
FROM users 
WHERE ID_API = '12345' OR ID = '12345'
ORDER BY ID_API = '12345' DESC
LIMIT 1