![](/img/trans.png)
[英]How Can I fix Ora-01427 single-row subquery returns more than one row in select?
[英]single-row subquery returns more than one row Oracle Database
我有兩張桌子,即PESANMASUK和KONTAK。 在PESANMASUK我有5個文件: IDMASUK,TANGGALMASUK,JAM,NOMERHP,ISIPESAN 。 和KONTAK我有3個文件: IDKONTAK,NAMA,NOHP 。
PESANMASUK表數據:
IDMASUK TANGGALMASUK JAM NOMERHP ISIPESAN
1 09/08/2015 09:00 +62847776 try sms
2 08/08/2015 10:00 +62856790 plase come in
3 08/08/2015 06:00 +6283444 you and me
KONTAK表數據:
IDKONTAK NAMA NOHP
1 RIAN +62847776
2 ALFIAN +62856790
這個結果是我想要的:
IDMASUK TANGGALMASUK JAM NOMERHP NAMA ISIPESAN
1 09/08/2015 09:00 +62847776 RIAN try sms
2 08/08/2015 10:00 +62856790 ALFIAN plase come in
3 08/08/2015 06:00 +6283444 you and me
這是我的oracle查詢:
SELECT IDMASUK, TANGGALMASUK, JAM, NOMERHP, ISIPESAN,
(SELECT NAMA FROM KONTAK WHERE NOHP IN (SELECT NOMERHP FROM PESANMASUK)) AS NAMA
FROM PESANMASUK
我得到這樣的錯誤:
ORA-01427: single-row subquery returns more than one row
我想在PESANMASUK的NOMERHP和KONTAK的NAMA之間進行匹配並返回所有行。
我該怎么解決這個問題?
試一試。:)
左連接獲取左表上的詳細信息或行,即使它在右表上沒有匹配的數據。
請瀏覽以下鏈接,了解有關左連接的更多信息。 http://www.w3schools.com/sql/sql_join_left.asp
select idmasuk, tanggalmasuk, jam, nomerhp, nama, isipesan
from
pesanmasuk
left join kontak
on pesanmasuk.nomerhp = kontak.nohp;
希望能幫助到你。 干杯! :)
如錯誤所示,子查詢返回多行。 以下是兩種修復方法:
SELECT IDMASUK, TANGGALMASUK, JAM, NOMERHP, ISIPESAN,
(SELECT MAX(NAMA) FROM KONTAK WHERE NOHP IN (SELECT NOMERHP FROM PESANMASUK)) AS NAMA
FROM PESANMASUK;
要么:
SELECT IDMASUK, TANGGALMASUK, JAM, NOMERHP, ISIPESAN,
(SELECT NAMA FROM KONTAK WHERE NOHP IN (SELECT NOMERHP FROM PESANMASUK WHERE ROWNUM = 1)) AS NAMA
FROM PESANMASUK;
不過,我的猜測是,你想要的並不是你想要的相關子查詢:
SELECT IDMASUK, TANGGALMASUK, JAM, NOMERHP, ISIPESAN,
(SELECT k.NAMA FROM KONTAK k WHERE k.NOHP = p.NOMERHP) AS NAMA
FROM PESANMASUK p
編輯:
要獲取所有名稱,可以使用listagg()
:
SELECT IDMASUK, TANGGALMASUK, JAM, NOMERHP, ISIPESAN,
(SELECT LISTAGG(k.NAMA, ',') WITHIN GROUP (ORDER BY k.NAMA)
FROM KONTAK k
WHERE k.NOHP = p.NOMERHP) AS NAMA
FROM PESANMASUK p
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.