如何仅选择表的几列

时间:2019-02-28 08:05:58

标签: sql

我有一个包含约1000列的表格。当我使用

Select * 
from Table 

它返回表的整个记录​​。但是我只想要记录的有限列。

col1        |   col2    |    col3 |   col4   |    col 5  |    ......................... | col1000   |
            |           |         |          |           |    ------------------------- |           |
            |           |         |          |           |    ------------------------- |           |
            |           |         |          |           |    ------------------------- |           |
            |           |         |          |           |    ------------------------- |           |
------------------------------------------------------------------------------------------------------      

我只需要col5到col1000记录数据即可。

6 个答案:

答案 0 :(得分:3)

您必须在select

中编写所需的所有列
select col5, col6, ......... ,col1000 from table

没有淘汰的方法,select *表示表格中的所有列

答案 1 :(得分:3)

如果您确实想在不键入每个列名称的情况下进行操作,则一种方法是使用动态查询。

例如,在 SQL Server 中,您可以编写动态查询,如下所示。

DECLARE @selstmt AS NVARCHAR(max);
SET @selstmt = 'select ' + Stuff((SELECT ', ' + Quotename(NAME) FROM 
                ( SELECT c.NAME FROM 
                sys.columns c JOIN sys.tables t ON c.object_id = t.object_id 
                WHERE t.NAME = 'yourtablename' 
                AND c.NAME NOT IN('col1', 'col2', 'col3', 'col4') 
                )t FOR 
                xml path(''), type).value('.', 
                'NVARCHAR(MAX)'), 1, 1, ''); 

SET @selstmt = @selstmt + ' from yourtable' 

EXEC sp_executesql   @selstmt 

答案 2 :(得分:0)

指定要选择的列名,而不使用*运算符。

SELECT *将返回表的所有列

SELECT col5, col6, col7,...., col1000(col5到col1000)将仅返回表的指定列

答案 3 :(得分:0)

SSMS实际上有一种简单的方法。

SELECT * FROM TableA

选择此文本,然后按CNTRL SHIFT Q

然后您拥有了所有列,可以轻松删除其中的一些列。

答案 4 :(得分:0)

您必须编写所有列。

SELECT col1, col2, col3 from table;

但是...

在MySQL上测试

由于列过多,可以运行查询以从表中选择所需的列:

SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR ', ')
FROM information_schema.COLUMNS  
WHERE TABLE_SCHEMA = 'schemaName' AND TABLE_NAME = 'table'
AND COLUMN_NAME IN ('col1', 'col2', 'col3');

# or to filter the columns
# AND COLUMN_NAME NOT IN ('col1', 'col2', 'col3');

并使用结果列构建查询。


GROUP_CONCAT在用,分隔的一行中输出值,因此您可以使用它们直接查询表

答案 5 :(得分:-2)

SELECT
 col1,col2,col3
FROM
 table_name