如何选择行并返回所有列,而不是指定单个列名?
我是否还可以仅返回符合特定条件的列? (例如,以“_”开头的col名称)
答案 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