我有一个包含约1000列的表格。当我使用
Select *
from Table
它返回表的整个记录。但是我只想要记录的有限列。
col1 | col2 | col3 | col4 | col 5 | ......................... | col1000 |
| | | | | ------------------------- | |
| | | | | ------------------------- | |
| | | | | ------------------------- | |
| | | | | ------------------------- | |
------------------------------------------------------------------------------------------------------
我只需要col5到col1000记录数据即可。
答案 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;
但是...
由于列过多,可以运行查询以从表中选择所需的列:
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