Sottoquery MySQL restituisce più di una riga

Sto eseguendo questa query:

SELECT voterfile_county.Name, voterfile_precienct.PREC_ID, voterfile_precienct.Name, COUNT((SELECT voterfile_voter.ID FROM voterfile_voter JOIN voterfile_household WHERE voterfile_voter.House_ID = voterfile_household.ID AND voterfile_household.Precnum = voterfile_precienct.PREC_ID)) AS Voters FROM voterfile_precienct JOIN voterfile_county WHERE voterfile_precienct.County_ID = voterfile_County.ID; 

Sto cercando di farlo restituire qualcosa del genere:

 County_Name Prec_ID Prec_Name Voters(Count of # of voters in that precienct) 

Tuttavia, sto ottenendo l’errore:

1242 – La sottoquery restituisce più di 1 riga.

Ho provato a inserire l’istruzione COUNT nella sottoquery ma ottengo un errore di syntax non valido.

Puoi provarlo senza subquery, con un gruppo semplice di:

 SELECT voterfile_county.Name, voterfile_precienct.PREC_ID, voterfile_precienct.Name, count(voterfile_voter.ID) FROM voterfile_county JOIN voterfile_precienct ON voterfile_precienct.County_ID = voterfile_County.ID JOIN voterfile_household ON voterfile_household.Precnum = voterfile_precienct.PREC_ID JOIN voterfile_voter ON voterfile_voter.House_ID = voterfile_household.ID GROUP BY voterfile_county.Name, voterfile_precienct.PREC_ID, voterfile_precienct.Name 

Quando usi GROUP BY, qualsiasi colonna su cui non stai raggruppando deve avere una clausola aggregata (fe SUM o COUNT.) Quindi in questo caso devi raggruppare il nome della contea, precienct.id e precient.name.

Se si verifica un errore: errore 1242 Subquery restituisce più di una riga, provare a mettere QUALSIASI prima della sottoquery. Per esempio:

Questo errore di restituzione della query:

 SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2); 

Questa è una buona domanda:

 SELECT * FROM t1 WHERE column1 = ANY (SELECT column1 FROM t2); 

Prova questo

 SELECT voterfile_county.Name, voterfile_precienct.PREC_ID, voterfile_precienct.Name, (SELECT COUNT(voterfile_voter.ID) FROM voterfile_voter JOIN voterfile_household WHERE voterfile_voter.House_ID = voterfile_household.ID AND voterfile_household.Precnum = voterfile_precienct.PREC_ID) as Voters FROM voterfile_precienct JOIN voterfile_county ON voterfile_precienct.County_ID = voterfile_County.ID 

Guarda l’esempio seguente e modifica la tua query di conseguenza.

 select COUNT(ResultTPLAlias.id) from (select id from Table_name where .... ) ResultTPLAlias;