2010-12-10 9 views
1
SELECT SUBSTRING(datapath,1,5) 
    FROM batchinfo 
WHERE rowid IN (select * 
        from qvalues 
        where rowid in (select rowid 
            from batchinfo 
            where datapath like '%thc%')) 
GROUP BY SUBSTRING(datapath, 1, 5) 
    HAVING COUNT(*) > 1 

Ich erhalte diese StörungMehrere Unterabfragen - SQL Server fordert EXISTS an?

Msg 116, Ebene 16, Status 1, Zeile 3 Nur ein Ausdruck kann in der Auswahlliste angegeben werden, wenn die Unterabfrage nicht mit EXISTS eingeführt.

Weiß jemand was mache ich falsch?

Antwort

11

...where rowid in (select * from qvalues... Ich schätze die * gibt es ein Problem. Geben Sie die spezifische Spalte von qvalues an, die mit rowid verglichen werden soll (wie in Ihrem zweiten Subselect); Wie es ist, weisen Sie SQL Server an, rowid mit einer vollständigen Zeile zu vergleichen.

+0

+1: Die IN-Klausel (in SQL Server) unterstützt nur eine Spalte auf beiden Seiten der Auswertung. MySQL ist der einzige, den ich gesehen habe, der Tupel macht ... –