Alt sorgunun birden fazla satır döndürdüğü bir hata verir. Sebebi nedir?alt sorgu 1 satırdan daha fazla döndürür
8
A
cevap
2
aşağı Sorgunuzla Breaking, sahip
Ana sorgusu:
select disease_name from disease where disease_id=
Alt sorgu 1:
select disease_id from disease_symptom where
disease.disease_id=disease_symptom.disease_id AND
symptom_id=
Alt sorgu 2:
select symptom_id from symptom where symptom.symptom_id=disease_symptom.symptom_id
AND symptom_name='fever' OR symptom_name='head ache'
kullandığınız yana eşit işaretler, alt sorgular cann Birden çok öğe döndürür. Alt sorgu 2'nin kullanılmakta olduğu OR
nedeniyle 2 öğe döndürme şansı daha yüksek gibi görünüyor.
14
WHERE symptom_id IN (sub-query2)
gibi IN
yan tümcesini denemek isteyebilirsiniz. İki dış sorgunuz alt sorgularından tek bir sonuç beklemek üzere yapılandırılmıştır. Ancak, yapılandırdığınız şeylerin olduğu gibi, alt sorgularınız da birden fazla sonuç verebilir. Aslında birden fazla sonuç istiyorsanız, bunu böyle yeniden:
... where disease_id IN (subquery returning multiple rows...)
, alt sorgular performansını öldürmek olduğunu ve katlanarak iç içe alt sorgular için wosrse oluyor. Bunun yerine INNER JOIN
'u kullanarak bakmak isteyebilirsiniz.
Sanırım bariz olanı söyleyeceğim: alt sorgu birden fazla satır döndürür. "hastalık_kimliği" birden fazla değere eşit olamaz. Bu sorgu, alt sorgu yerine "JOIN" ile daha iyi yazılabilir. –
http://stackoverflow.com/a/3423792/2806972 c Bu, bu Q için çözüm olabilir: –