有一个表用户。基于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
如何管理?
答案 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 = 12345
或ID = 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