使用列号而不是名称在mysql中进行SELECT

时间:2013-07-13 02:49:18

标签: mysql sql ordinal

有没有办法做类似的事情:

SELECT * FROM TABLE WHERE COLUMN_NUMBER = 1;

4 个答案:

答案 0 :(得分:3)

不,你不能。列顺序在MySQL中并不重要。有关详细信息,请参阅以下问题。

mysql - selecting values from a table given column number

答案 1 :(得分:1)

如果您的表有一个名为COLUMN_NUMBER的列,并且您希望从该列中包含值为“1”的表中检索行,那么该查询应该可以解决问题。

我怀疑你要做的是用别名引用选择列表中的表达式。这不受支持。 WHERE子句中引用列的表达式必须按名称引用该列。

我们可以使用内联视图播放一些技巧,为表达式提供别名,但就WHERE谓词而言,这是没有效率的,因为MySQL实现派生表的方式。并且,在这种情况下,它是内联视图中的列的名称,必须在外部查询中引用。

答案 2 :(得分:0)

我是怎么做到的:

我正在尝试在 {{1}]中获取(<3>个值) column number 4 }

sometable

当然,如果数据库名称是已知的,第一行可能会被鞭打,set @mydb=(SELECT DATABASE()); set @mycol=(select COLUMN_NAME from information_schema.columns where table_schema=@mydb and table_name='sometable' and ordinal_position = 4); SELECT Date,@mycol FROM sometable ORDER BY Date DESC LIMIT 3; 会替换为真实的数据库名称。

答案 3 :(得分:-1)

你可以做到这一点

示例:

$query="select * from employee";

$result=mysql_query($query);

$meta=mysql_fetch_field($result,0)  // 0 is first field in table  , 1 is second one ,,, etc

$theNameofFirstField=$meta->name;    // this well return first  field name in table


// now you can use it in other query

$seconQuery="select $theNameofFirstField from employee";