Kan jeg logisk ordne kolonner i en tabell?

stemmer
78

Hvis jeg legger til en kolonne i en tabell i Microsoft SQL Server, kan jeg kontrollere hvor kolonnen vises logisk i søk?

Jeg ønsker ikke å rote med den fysiske utformingen av kolonner på disk, men jeg vil gjerne logisk grupperer kolonner sammen når det er mulig, slik at verktøy som SQL Server Management Studio vise innholdet i bordet på en praktisk måte.

Jeg vet at jeg kan gjøre dette gjennom SQL Management Studio ved å gå inn i deres design -modus for tabeller og dra rekkefølgen på kolonner rundt, men jeg vil gjerne være i stand til å gjøre det i rå SQL, slik at jeg kan utføre bestilling skript fra kommandolinjen.

Publisert på 04/08/2008 klokken 21:37
kilden bruker
På andre språk...                            


8 svar

stemmer
63

Du kan ikke gjøre dette auto (på en trygg måte som er) uten å lage en ny tabell.

Hva Enterprise Manager gjør når du begår en etterbestilling er å opprette en ny tabell, flytte data og deretter slette den gamle tabellen og endre navn på ny tabell med det eksisterende navnet.

Hvis du vil at kolonner i en bestemt rekkefølge / gruppering uten å endre sin fysiske rekkefølge, kan du opprette en visning som kan bli hva du måtte ønske.

Svarte 04/08/2008 kl. 21:54
kilden bruker

stemmer
36

Jeg tror det alle her mangler, er at selv om ikke alle har å forholde seg til 10-tallet, 20-tallet, eller 1000 tilfeller av den samme programvaren som er installert over hele landet og verden ... de av oss at design kommersielt solgt programvare gjør det. Som et resultat, utvider vi systemer over tid, utvide tabeller ved å legge til felt som ny kapasitet er nødvendig, og som disse feltene er identifisert hører hjemme i en eksisterende tabell, og som sådan, over et tiår med vekst, økende, og legger til felt, etc til tabeller .... og deretter å måtte jobbe med disse tabellene fra design, for å støtte, noen ganger grave i rådata / feilsøking for å feilsøke nye funksjonalitet bugs .... det er utrolig irriterende å ikke ha den primære informasjonen du vil se i den første håndfull felt, når du kan ha tabeller med 30-40-50 eller 90 felt og ja i et strengt normalisert database.

Jeg har ofte ønsket at jeg kunne gjøre dette, for denne eksakte årsaken. Men kort til å gjøre nøyaktig hva SQL gjør, Building a Opprett Script for en ny tabell slik jeg vil ha det, skrive inn til den, så faller alle eksisterende begrensninger, relasjoner, nøkler, indeks, etc etc etc fra den eksisterende tabellen og døpe den "nye" tabellen tilbake til det gamle navnet, og deretter lese alle nøkler, relasjoner, indeks, etc etc ....

Er ikke bare kjedelig, tidkrevende, men ... i fem år til, må skje igjen ....

Det er så nær verdt den massive mengden av arbeid, men poenget er ... det vil ikke være siste gang vi trenger denne muligheten, siden våre systemer vil fortsette å vokse, utvide og få felt i en wacked bestilt drevet av behovet / design tilleggene.

Et flertall av utviklere tenke fra et enkelt system ståsted som serverer en enkelt bedrift eller svært spesifikke hardt boks markedet.

"Off-the-sokkel", men betydelig progressive designere og ledere av utviklingen i markedet plass vil alltid ha for å håndtere dette problemet, om og om igjen ..... ville elske en kreativ løsning hvis noen har en. Dette kan lett spare selskapet et dusin timer i uken, bare ikke å måtte rulle over, eller huske hvor "det" feltet er i kildedatatabellen ....

Svarte 01/02/2013 kl. 00:10
kilden bruker

stemmer
5

Hvis jeg forstår spørsmålet ditt, du vil påvirke hva kolonner blir returnert første, andre, tredje, osv i eksisterende spørsmål, ikke sant?

Hvis alle dine spørsmål er skrevet med SELECT * FROM TABLE- da vil de vises i produksjonen som de er lagt ut i SQL.

Hvis dine spørsmål er skrevet med SELECT Field1, Field2 FROM TABLE- da den rekkefølgen de er lagt ut i SQL spiller ingen rolle.

Svarte 06/08/2008 kl. 15:42
kilden bruker

stemmer
1
  1. Script din eksisterende tabell til en spørring vindu.
  2. Kjør dette skriptet mot en testdatabase (fjern Bruk statement)
  3. Bruk SSMS å gjøre kolonnen endringer du trenger
  4. Klikk Generer Change Script (venstre ikon mest og nederste på buttonbar som standard)
  5. Bruk dette skriptet mot din ekte bord

All manuset egentlig gjør er å opprette en ny tabell tabell med de ønskede kolonne bestillinger, kopierer alle dataene til den, faller den opprinnelige tabellen, og endrer navn da den sekundære bordet for å ta sin plass. Dette betyr spare deg å skrive det selv om du bør ha en distribuere script.

Svarte 08/03/2016 kl. 14:31
kilden bruker

stemmer
1

Det er en måte, men det er bare midlertidig for selve spørringen. For eksempel,

La oss si du har 5 bord. Tabell kallesT_Testing

Fornavn, Etternavn, telefonnummer, e-post, og Member_ID

du vil den skal vise sin ID, deretter etternavn, deretter Fornavn, så Telefon deretter E-post.

Du kan gjøre det som per Velg.

Select Member_ID, LastName, FirstName, PhoneNumber, Email
From T_Testing

Annet enn det, hvis du bare vil Etternavn- til Show før første navn eller annen grunn, kan du gjøre det også slik:

Select LastName, *
From T_Testing

Det eneste du ønsker å være sikker på at du gjør er at orderby eller Hvor Funksjon må betegnes som Table.Column hvis du skal bruke en Hvor eller orderby

Eksempel:

Select LastName, *
From T_Testing
Order By T_Testing.LastName Desc

Jeg håper dette hjelper, jeg fant ut av det fordi jeg trengte å gjøre dette selv.

Svarte 06/11/2014 kl. 18:08
kilden bruker

stemmer
1

Det kan gjøres ved hjelp av SQL, ved å endre systemtabeller direkte. For eksempel, se her:

Alter table - Legg til ny kolonne i mellom

Men jeg ville ikke anbefale å spille med systemtabeller, med mindre det er absolutt nødvendig.

Svarte 05/10/2008 kl. 20:34
kilden bruker

stemmer
1

Når Management Studio gjør det, er det å lage en midlertidig tabell, kopiere alt over, slippe den opprinnelige tabellen og døpe den midlertidige tabellen. Det er ingen enkel tilsvarende T-SQL-setning.

Hvis du ikke har lyst å gjøre det, kan du alltids lage en visning av tabellen med kolonnene i den rekkefølgen du ønsker og bruke den?

Edit: slått!

Svarte 04/08/2008 kl. 22:00
kilden bruker

stemmer
0

Det er ikke mulig å endre rekkefølgen på kolonnene uten å gjenskape hele tabellen. Hvis du har noen forekomster av databasen bare kan du bruke SSMS for dette (Velg tabellen og klikk på "design").

I tilfelle du har for mange tilfeller for en manuell prosess, bør du prøve dette skriptet: https://github.com/Epaminaidos/reorder-columns

Svarte 03/09/2016 kl. 10:56
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more