sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2000:Idéer för att utföra sammanlänkningsunderfrågan

Ta en titt på dessa artiklar:

http://dataeducation.com/rowset-string-concatenation- vilken-metod-är-bäst/

http:// www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/ (Se Phil Factors lösning för korskoppling i svaren - som kommer att fungera i SQL Server 2000)

Uppenbarligen i SQL Server 2005 är FOR XML-tricket det enklaste, mest flexibla och generellt sett mest prestanda.

När det gäller att returnera en raduppsättning för varje rad, om du fortfarande vill göra det av någon anledning, kan du göra det i en lagrad procedur, men klienten kommer att behöva konsumera alla rader i den första raduppsättningen och sedan gå till nästa raduppsättning och associera den med den första raden i den första raduppsättningen, etc. Din SP skulle behöva öppna en markör på samma uppsättning som den returnerade som den första raduppsättningen och köra flera val i följd för att generera alla underordnade raduppsättningar. Det är en teknik jag har gjort, men bara där ALLT uppgifterna faktiskt behövdes (till exempel i en fullt fylld trädvy).

Och oavsett vad folk säger, att göra det på klientsidan är ofta ett mycket stort slöseri med bandbredd, eftersom att returnera alla rader och göra looping och breaking i klientsidan innebär att ett stort antal identiska kolumner överförs i början av varje rad bara för att få den ändrade kolumnen i slutet av raden.

Var du än gör det bör det vara ett medvetet beslut baserat på din användningsfall.



  1. Hur infogar jag flera rader med en främmande nyckel med en CTE i Postgres?

  2. Hur hanterar jag band när jag rangordnar resultat i MySQL?

  3. MySQL-transaktion:SELECT + INSERT

  4. mySQL SELECT kommande födelsedagar