在访问数据库中选择第N个值(SQL)

时间:2014-11-17 13:17:07

标签: mysql ms-access-2010 nth-element

我试图在Access数据库中选择特定值。 所以数据库包含很多列,我只能选择第一个值,或者最后一个:

SELECT Column1, First(Column7) AS Column7_1, First(Column8) AS FirstOfColumn8, [Column1] & [Column7_1] AS [Column1&Column7]
FROM [Table1]
GROUP BY Column1;

现在我想弄清楚的是如何在这些列中获取第n个值。如果SQL能识别第三个(Column7),那将是完美的... 我尝试了以下方法:

SELECT Column1, First(Column7) AS Column7_1, First(Column8) AS FirstOfColumn8, [Column1] & [Column7_1] AS [Column1&Column7]
FROM [Table1]
WHERE Column7 > (SELECT First(Column7) FROM [Table1]) AND Column8 > SELECT First(Column8) FROM [Table1]) 
GROUP BY Column1;

但这不是让我在那里。来自不同列的值不再对应。 有什么猜测我怎么能得到这个? 感谢

2 个答案:

答案 0 :(得分:0)

AFAIK,使用上述语法按列号选择列并不支持SQL。

类似于以下内容可以解决问题(使用动态SQL):

get list of column names in given table*
for each column name
  do this
end

*以下查询可能有用!

SELECT s.NAME SchemaName, 
       t.NAME TableName, 
       c.NAME ColumnName 
FROM   sys.columns c 
       INNER JOIN sys.tables t 
               ON c.object_id = t.object_id 
       INNER JOIN sys.schemas s 
               ON t.schema_id = s.schema_id

答案 1 :(得分:0)

感谢回复, 我忘了指出的是,我实际上并没有在列中尝试第n个单元格;它更多的是获取特定colmn中包含的第n个值。 例如,请参阅下表

Column1  Column2  Column3
A1       Prop1     20
A1       Prop1     20
A2       Prop2     15
A2       Prop1     20
A3       Prop2     15
A3       Prop3     5 
A3       Prop3     5 
A4       Prop1     20
A4       Prop2     15
A4       Prop3     5
A4       Prop4     10

因此,我希望为每个column1id选择第2列中的第n个值,以便获取 第一个要素:

Column1  Column2  Column3
A1       Prop1     20
A2       Prop1     20
A3       Prop2     15
A4       Prop1     20 

表示第二个元素:

Column1  Column2  Column3

    A2       Prop2     15
    A3       Prop3     5 
    A4       Prop2     15

和第四个:

Column1  Column2  Column3

    A4       Prop4     10

希望它有意义