Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:如何按编号选择列?_Mysql_Select_Syntax - Fatal编程技术网

MySQL:如何按编号选择列?

MySQL:如何按编号选择列?,mysql,select,syntax,Mysql,Select,Syntax,我正在编写一个程序,我需要按编号而不是按名称选择列名 也就是说,我的表的属性是: SSN, FirstName, LastName, MiddleName, Address, City, State, Zip 如何仅从第0列(SSN)、第1列(名字)、第2列(姓氏)、第6列(州)中选择数据 有没有一种方法可以做到这一点而不必钻研信息模式 你应该重新考虑你的设计。一个表可以改变,它可以发展,列顺序是非常易变的。不应硬编码列编号 SELECT `0`,`1`,`2`,`6` FROM `table

我正在编写一个程序,我需要按编号而不是按名称选择列名

也就是说,我的表的属性是:

SSN, FirstName, LastName, MiddleName, Address, City, State, Zip
如何仅从第0列(SSN)、第1列(名字)、第2列(姓氏)、第6列(州)中选择数据


有没有一种方法可以做到这一点而不必钻研信息模式

你应该重新考虑你的设计。一个表可以改变,它可以发展,列顺序是非常易变的。不应硬编码列编号

SELECT `0`,`1`,`2`,`6` FROM `table` ORDER BY `ssn`

附录


我所说的“进化”和“变化无常”,并不是说数据库引擎可以移动它们。这几乎是修修补补。不,我的意思是,未来需求可能会发生变化,表格设计也可能会更新。如果您列出实际的列名而不是列位置顺序,那么将来修改旧代码将更容易。与行位置一样考虑列位置:不要期望结果中基于输入顺序的特定顺序,而是让查询提供所需的顺序。

好的,所以不要这样做,但是,如果确实需要这样做,可以在信息架构中使用COLUMNS.ORDINAL_position

为什么要按数字选择?这是一个非常糟糕的设计,如果它是任意的。或者这是作业?你能将它们存储在一个数组中并引用数组键吗?我的意思是,我可以跟踪另一个结构,如果我可以直接进行选择,那就更容易了。在工作中学习了别人的代码,我不想重新设计很多东西。啊。。我想可能是这样的。好了,该重构了!顺便说一句,如果您希望这样做是因为旧表为列名保留了字,这是一个常见的问题,您可以简单地将列名用引号括起来。例如,从SELECT中选择SELECT可能是合法的SQL,但我不确定。