有一个表用户。基于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


如何管理?

最佳答案

通常,您可以查找具有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

关于mysql - 在MySQL中基于IF EXISTS的条件SELECT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54918941/

10-11 23:24