0
以下はSQL問合せです。ORA-01427:1行副問合せは複数の行を戻します。ORA-01427:1行副問合せが複数の行を戻します。SQL問合せ
周りの作業を支援してください:
SELECT *
FROM TableName err
WHERE ERR.SYSCD IN
(decode(REGEXP_COUNT('TEST1,TEST2', ','), 0, 'TEST3',
(SELECT DISTINCT syscd
FROM TableName
WHERE syscd IN
(SELECT err.syscd
FROM TableName ERR
WHERE ERR.SYSCD NOT IN
(SELECT UPPER(
REGEXP_SUBSTR(
'TEST1',
'[^,]+',
1,
LEVEL))
CNTRY_CD
FROM DUAL
CONNECT BY REGEXP_SUBSTR(
'TEST1',
'[^,]+',
1,
LEVEL)
IS NOT NULL)
)
OR syscd IS NULL)))
エラーが一目瞭然です:サブクエリの一つは、複数の行を返しています。ビジネスロジックを検査し、クエリを変更するのに最適です。 –
@TimBiegeleisenは正しい(自明のメッセージです)。これをボーナスとして追加します:ソーステーブルの列にREGEXPを設定してもよろしいですか?テーブルが小さければ、それは大丈夫です。それ以外の場合は、テーブルのフルスキャンを招待しています。 – FDavidov
もし私が賭けの男だったら、SELECT DISTINCT syscdサブクエリが原因であると言いたいのですが、それはあなたが単一の行結果を必要とする唯一のものだからです。あなたがそれを修正するのを助けるためには、あなたが望むことを説明する必要があります。 – Deltharis