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ů.
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