【发布时间】:2013-07-11 16:19:33
【问题描述】:
有什么办法可以做到:
SELECT * FROM TABLE WHERE COLUMN_NUMBER = 1;
?
【问题讨论】:
-
这个的用例是什么?即使有可能,对架构的任何更改都会破坏您的查询。
有什么办法可以做到:
SELECT * FROM TABLE WHERE COLUMN_NUMBER = 1;
?
【问题讨论】:
我正在尝试在 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;
当然,如果数据库名是已知的,第一行可以被鞭打,@mydb替换为真实的数据库名。
【讨论】:
你可以做到这一点
例子:
$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";
【讨论】:
如果您的表有一个名为 COLUMN_NUMBER 的列,并且您想从该列包含值“1”的表中检索行,那么该查询应该可以解决问题。
我怀疑您正在尝试使用别名引用选择列表中的表达式。这不受支持。 WHERE 子句中引用列的表达式必须按名称引用列。
我们可以使用内联视图玩一些技巧,为表达式赋予别名,但这在 WHERE 谓词方面效率不高,因为 MySQL 实现派生表的方式。而且,在这种情况下,它是内联视图中必须在外部查询中引用的列的名称。
【讨论】:
不,你不能。列顺序在 MySQL 中并不重要。有关详细信息,请参阅以下问题。
【讨论】: