← Všechny znalosti

PUBLISHED

Proč scalar subquery vrací více než jednu hodnotu

Diagnostický princip pro situaci, kdy výraz očekává jednu hodnotu, ale vnitřní dotaz zachová více řádků.

sql-serversqldebugging

Problém

Subquery použité jako jediná hodnota vrací více řádků a SQL Server nemůže zvolit jednu z nich.

Kontext

Častý případ vznikne při náhradě agregace analytickou funkcí: analytická hodnota může být na více řádcích stejná, ale počet řádků zůstane větší než jedna.

Řešení

Spusť subquery samostatně, ověř počet řádků a zjisti, zda je správným řešením agregace, přesnější filtr nebo výběr jedné reprezentativní hodnoty. TOP 1 nepřidávej bez znalosti důvodu vícenásobnosti.

Ověření

Po opravě ověř, že subquery vrací pro každý outer row nejvýše jednu hodnotu nebo NULL.

Omezení

TOP 1 je bezpečný pouze tam, kde logika zaručuje ekvivalentní kandidátní hodnoty nebo je pořadí explicitní součástí požadavku.


Původ: Zobecněno z vlastní technické zkušenosti autora projektu

Aktualizováno: 2026-08-04