MySQL SELECT语句可以在不指定列名的情况下工作吗?

时间:2009-09-19 08:54:43

标签: sql select mysql

如何选择行并返回所有列,而不是指定单个列名?

我是否还可以仅返回符合特定条件的列? (例如,以“_”开头的col名称)

4 个答案:

答案 0 :(得分:7)

您可以选择所有列:

SELECT * FROM table_name

您无法在SELECT语句中过滤列名,但您可以使用SHOW COLUMNS过滤数据库本身中存在的列名:

SHOW COLUMNS FROM table_name LIKE "_%"

将显示以“_”开头的列。如果你有一个包含很多列的非常大的表,并且你必须从这些字段中构建一个SELECT语句,我建议首先用SHOW COLUMNS显示列,然后构造你的SELECT查询,以编程方式构建语句。结果。

答案 1 :(得分:3)

一切:

SELECT * FROM mytable

首先从数据库模式表中选择所需的列(以col ...开头):

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'mytable' AND column_name LIKE 'col%'

然后选择值:

SELECT [found column names from previous query] FROM mytable

答案 2 :(得分:1)

SELECT * FROM TABLE_NAME选择所有列。

答案 3 :(得分:1)

当您尝试使用字段名称时,就好像它们是数据一样,很明显您的表格设计不适合您想要做的事情。

而不是在字段名称中包含数据的表,例如:

Id  English  Swedish  German
-------------------------------
1   Water    Vatten   Wasser
2   Car      Bil     Auto

您需要一个表格,其中包含以下字段中的数据:

Id  Language  Word
-------------------
1   English   Water
1   Swedish   Vatten
1   German    Wasser
2   English   Car
2   Swedish   Bil
2   German    Auto

从这样的表中动态获取特定语言没有问题,这是第一个表无法动态生成SQL查询时无法完成的。

在规范化形式中,您将使用两个表:

LanguageId  Language
---------------------
1           English
2           Swedish
3           German

Id  LanguageId  Word
------------------------
1   1           Water
1   2           Vatten
1   3           Wasser
2   1           Car
2   2           Bil
2   3           Auto