2010-10-16 11 views
2

J'ai une table de base de données USERTABLESQL: Trouver première ligne première colonne Sql Tableau

CREATE TABLE [UserTable](
    [ID] [int] NULL, 
    [Name] [nvarchar](50) NULL, 
    [City] [nvarchar](50) NULL 
) ON [PRIMARY] 

cette table ont données suivantes

 
ID    Name      City 
----------- -------------------------------- 
1    Vijendra     Delhi 
2    Singh      Noida 
3    Shakya     New Delhi 

question n ° Maintenant, il y a un moyen de découvrir la première colonne la première ligne sans spécifier le nom de la colonne (je ne veux utiliser aucun nom de colonne), c'est la même chose que pour trouver la notation de la matrice, qui serait le [1,1] ème emplacement.

je peux trouver la première colonne première ligne avec

Select Top 1 City from UserTable 

Je ne veux pas à l'utilisateur le nom de colonne (Ville).

Est-ce possible? Si oui, dites-moi comment nous pouvons y parvenir.

+0

Pourquoi voudriez-vous une telle chose? Les colonnes reçoivent des noms pour une raison - vous pouvez donc utiliser le nom pour y accéder. Simplement utiliser l'ordinal réduit la lisibilité et pour la plupart des tables, cela n'aurait aucun sens. – Oded

+0

@Oded: Je veux juste savoir ce que nous pouvons faire ou non. – Vijjendra

+0

Il n'y a pas de "première rangée" non plus. La requête 'Select Top 1 City from UserTable' pourrait parfaitement retourner n'importe quelle ligne puisque vous n'avez pas spécifié de clause' ORDER BY'. Vous pouvez vous attendre à ce qu'il renvoie le top 1 selon l'ordre 'ID', mais si vous ajoutez un index à la colonne' City' cela changera probablement. Dans aucun des deux cas, un résultat particulier ne serait garanti. –

Répondre

0

En général, les bases de données relationnelles n'ont pas de concept d'ordonnancement de lignes ou de colonnes qui ne sont pas spécifiées par l'utilisateur dans une requête donnée.

0

En rapidement comme vous pouvez le faire en écrivant un code et l'utilisation dynamique sql:

declare @field varchar(100), @SQL varchar(500) 
    set @field = (SELECT top 1 COLUMN_NAME FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = 'UserTable') 
    set @SQL = 'select top 1 ' + @field + ' from UserTable' 
    exec (@SQL) 

Bien sûr, peut-être il y a des façons plus intelligentes, mais cela est un début

Vous pouvez également envelopper tout cela procédure stockée pour le rendre plus facile et lisible

espère que cela aide