Как выбрать все столбцы таблицы, кроме одного столбца?
У меня есть почти 259 столбцов. Я не могу указать 258 столбцов в инструкции SELECT
.
Есть ли другой способ сделать это?
Как выбрать все столбцы таблицы, кроме одного столбца?
У меня есть почти 259 столбцов. Я не могу указать 258 столбцов в инструкции SELECT
.
Есть ли другой способ сделать это?
Этот подход можно использовать для получения данных из всех столбцов, кроме одного: -
Что-то вроде этого:
SELECT * INTO #TemporaryTable FROM YourTableName
ALTER TABLE #TemporaryTable DROP COLUMN Columnwhichyouwanttoremove
SELECT * FROM #TemporaryTable
DROP TABLE #TemporaryTable
Создайте представление. Да, в заявлении о создании представлений вам нужно будет перечислить каждое... и... каждое... поле... по... имени.
Один раз.
Затем просто select * from viewname
после этого.
Вы можете получить данные имени столбца из таблицы 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');
Я просто хотел повторить комментарий @Luann, поскольку я всегда использую этот подход.
Просто щелкните правой кнопкой мыши по таблице> Таблица сценариев, как> Выбрать в> Новое окно запроса.
Вы увидите запрос выбора. Просто уберите столбец, который вы хотите исключить, и у вас есть предпочтительный запрос выбора.
В вашем случае разверните столбцы этой базы данных в проводнике объектов. Перетащите столбцы в область запроса.
А затем просто удалите один или два столбца, которые вы не хотите, а затем запустите. Я открыт для любых предложений легче, чем это.
Попробуйте выполнить следующий запрос:
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;
Есть только один способ достичь этого имени. Другого метода не найдено. Вы должны перечислить все имена столбцов
Это не универсальное решение, но некоторые базы данных позволяют использовать регулярные выражения для указания столбцов.
Например, в случае Hive следующий запрос выбирает все столбцы, кроме ds и hr:
SELECT '(ds|hr)?+.+' FROM sales
Очевидно, SQL не был разработан программистами.
Если вы используете DataGrip, вы можете сделать следующее:
SELECT * FROM <your_table>;
*
и нажмите Alt+Enter
Expand column list
*
с полным списком столбцов