基于MySql中是否存在的条件选择

基于MySql中是否存在的条件选择,mysql,conditional,where-clause,Mysql,Conditional,Where Clause,有一个用户表。基于2列数据,我需要选择行 假设这两列是ID和ID\u API 所以,在获取数据时,我需要首先搜索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 WHE

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

假设这两列是IDID\u API

所以,在获取数据时,我需要首先搜索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为12345的行,您就可以查找ID为12345的行或ID为12345的行:

SELECT *
FROM users
WHERE ID_API = '12345' OR
      ID = '12345' AND NOT EXISTS (SELECT * FROM users WHERE ID_API = '12345')
在每个用户只有一行的特殊情况下,您可以通过搜索
ID\u API=12345
ID=12345
,然后按
ID\u API=12345
降序排列结果(因为如果为真,则返回值1),并使用
LIMIT 1
将结果限制为1行

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