我有一个要求,我只需要为提供的id获取一条记录。 如果表中存在id,它将获取该特定记录,如果不存在,则将获取NULL值记录
实施例 表 - : demo_table
id
-----------
1
2
3
4
5
(null)
例如,如果我将id作为1传递它应该只返回第1行,同样如果我将id作为4传递它应该只获取第4行但是如果我传递的id不在表中,它应该给我是第6条记录,即NULL值记录。
我希望这是单一SQL查询。感谢您的帮助。 如果您需要更多信息,请与我们联系。
此外,没有ROWNUM,ROWID概念。应该在1个查询中,即没有MINUS,UNION等
答案 0 :(得分:2)
c = [[1, 4, 43], [2, 5, 25], [3, 10, 28]]
答案 1 :(得分:2)
如果我正确地得到了这个要求,你想要将ID改为NULL。
以下是一个非常简单的技巧:
SELECT MAX(id) FROM demo_table WHERE id = 4;
这将返回id 4,如果不存在,则返回NULL。鉴于您始终在WHERE子句中包含ID,MAX不仅仅为您处理NO ROWS FOUND
。
答案 2 :(得分:0)
尝试以下
SELECT CASE WHEN id = 123 THEN 'NULL' ELSE id END id
FROM (SELECT TO_CHAR (NVL (MIN (id), '123')) AS id
FROM my_table
WHERE id = 6)
更新1
SELECT CASE WHEN TO_CHAR (id) IS NULL THEN 'NULL' ELSE id END id,
CASE WHEN ename IS NULL THEN 'NULL' ELSE ename END ename
FROM (SELECT TO_CHAR (id) id, ename
FROM my_table
WHERE id = 6
UNION
SELECT NULL, NULL
FROM DUAL
WHERE NOT EXISTS
(SELECT id, ename
FROM my_table
WHERE id = 6))
答案 3 :(得分:0)
select t.* from
( select * from demo_table
where id = 4 or id is null) as t
where t.id =
( IF EXISTS(SELECT Id FROM demo_table WHERE ID = 4)
SELECT 4
ELSE
SELECT null ) ;