我正在尝试用里面的SELECT编写一个DECODE语句,它看起来像这样:
SELECT DECODE(A.name, (SELECT name FROM B WHERE id IN (1000,1001)),'Value1','Value2') FROM A
Run Code Online (Sandbox Code Playgroud)
显然,如果我在DECODE中的select语句返回多行,我将得到一个异常"ORA-01427:单行子查询返回多行".这是公平的.
我希望在那里获得多行,这就是目的,我需要为所有匹配A.name和Value2的项显示Value1.像foreach循环一样但在DECODE中.
这样做的正确方法是什么?
更新:表A:
+--------------+--------+
|Surname | Name |
+--------------+--------+
| Abc| John |
| Smith| Piter |
| Cook| Ann |
+--------------+--------+
Run Code Online (Sandbox Code Playgroud)
表B:
+--------------+--------+
|ID | Name |
+--------------+--------+
| 1000| John |
| 1001| Piter |
| 2003| Ann |
+--------------+--------+
Run Code Online (Sandbox Code Playgroud)
我期待看到的:
值1
值1
值2
小智 5
在这种情况下,您可以使用CASE语句:
SELECT
CASE WHEN
a.name in (select name from b where id in (1000, 1001)) then 'Value1'
ELSE 'Value2'
END
FROM a;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1234 次 |
| 最近记录: |