[英]How to select all the columns of a table except one column?
如何选择表格中除一列之外的所有列?
我有将近 259 列我不能在SELECT
语句中提到 258 列。
有没有其他方法可以做到?
您可以使用这种方法从除一列之外的所有列中获取数据:-
像这样的东西:
SELECT * INTO #TemporaryTable FROM YourTableName
ALTER TABLE #TemporaryTable DROP COLUMN Columnwhichyouwanttoremove
SELECT * FROM #TemporaryTable
DROP TABLE #TemporaryTable
创建视图。 是的,在视图创建语句中,您必须列出每个...和...每个...字段...按...名称。
一次。
然后只需select * from viewname
之后。
这不是通用的解决方案,但某些数据库允许您使用正则表达式来指定列。
例如,在 Hive 的情况下,以下查询选择除 ds 和 hr 之外的所有列:
SELECT `(ds|hr)?+.+` FROM sales
您可以从 sys.columns 表中获取列名详细信息
尝试以下查询:
SELECT * FROM SYS.COLUMNS
WHERE object_id = OBJECT_ID('dbo.TableName')
AND [Name] <> 'ColumnName'
DECLARE @sql as VARCHAR(8000)
SET @sql = 'SELECT '
SELECT @sql += [Name] + ', ' FROM SYS.COLUMNS
WHERE object_id = OBJECT_ID('dbo.TableName')
AND [Name] <> 'ColumnName'
SELECT @sql += ' FROM Dbo.TableName'
EXEC(@sql)
有很多可用的选项,其中之一是:
CREATE TEMPORARY TABLE temp_tb SELECT * FROM orig_tb;
ALTER TABLE temp_tb DROP col_x;
SELECT * FROM temp_tb;
这里 col_x 是您不想包含在 select 语句中的列。
看看这个问题: 在 MySQL 中选择除一列之外的所有列?
无需创建新表,您可以简单地执行(例如使用 mysqli):
$r = mysqli_query('SELECT column_name FROM information_schema.columns WHERE table_name = table_to_query');
$c = count($r); while($c--) if($r[$c]['column_name'] != 'column_to_remove_from_query') $a[] = $r[$c]['column_name']; else unset($r[$c]);
$r = mysqli_query('SELECT ' . implode(',', $a) . ' FROM table_to_query');
如果您使用的是DataGrip,您可以执行以下操作:
SELECT * FROM <your_table>;
*
并按Alt+Enter
Expand column list
选项的弹出菜单*
您可以通过简单的查询检索列名列表,然后通过像这样的 apply where 查询删除这些列。
SELECT * FROM (
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'TableName'
) AS allColumns
WHERE allColumns.COLUMN_NAME NOT IN ('unwantedCol1', 'unwantedCol2')
尝试以下查询:
DECLARE @Temp NVARCHAR(MAX);
DECLARE @SQL NVARCHAR(MAX);
SET @Temp = '';
SELECT @Temp = @Temp + COLUMN_NAME + ', ' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='Person' AND COLUMN_NAME NOT IN ('Id')
SET @SQL = 'SELECT ' + SUBSTRING(@Temp, 0, LEN(@Temp)) +' FROM [Person]';
EXECUTE SP_EXECUTESQL @SQL;
在您的情况下,在对象资源管理器中展开该数据库的列。 将列拖入查询区域。
然后只需删除您不想要的一两列,然后运行它。 我愿意接受任何比这更容易的建议。
只有一种方法可以实现此给定列名。 没有找到其他方法。 您必须列出所有列名
如何选择表中除一列以外的所有列?
我有将近259列,我不能在SELECT
语句中提到258列。
还有其他方法吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.