Как выбрать все столбцы таблицы, кроме одного столбца?
Как выбрать все столбцы таблицы, кроме одного столбца?
У меня есть почти 259 столбцов. Я не могу указать 258 столбцов в инструкции SELECT
.
Есть ли другой способ сделать это?
Ответы
Ответ 1
Этот подход можно использовать для получения данных из всех столбцов, кроме одного: -
- Вставьте все данные во временную таблицу
- Затем отпустите столбец, который вы не хотите использовать во временной таблице
- Получить данные из временной таблицы (это не будет содержать данные удаленного столбца)
- Удалить временную таблицу
Что-то вроде этого:
SELECT * INTO #TemporaryTable FROM YourTableName
ALTER TABLE #TemporaryTable DROP COLUMN Columnwhichyouwanttoremove
SELECT * FROM #TemporaryTable
DROP TABLE #TemporaryTable
Ответ 2
Создайте представление. Да, в заявлении о создании представлений вам нужно будет перечислить каждое... и... каждое... поле... по... имени.
Один раз.
Затем просто select * from viewname
после этого.
Ответ 3
Вы можете получить данные имени столбца из таблицы 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)
Ответ 4
Есть много доступных вариантов, один из которых:
CREATE TEMPORARY TABLE temp_tb SELECT * FROM orig_tb;
ALTER TABLE temp_tb DROP col_x;
SELECT * FROM temp_tb;
Здесь col_x - это столбец, который вы не хотите включать в оператор select.
Взгляните на этот вопрос: Выберите все столбцы, кроме одного в MySQL?
Ответ 5
Без создания новой таблицы вы можете просто (например, с 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');
Ответ 6
Я просто хотел повторить комментарий @Luann, поскольку я всегда использую этот подход.
Просто щелкните правой кнопкой мыши по таблице> Таблица сценариев, как> Выбрать в> Новое окно запроса.
Вы увидите запрос выбора. Просто уберите столбец, который вы хотите исключить, и у вас есть предпочтительный запрос выбора. ![enter image description here]()
Ответ 7
В вашем случае разверните столбцы этой базы данных в проводнике объектов. Перетащите столбцы в область запроса.
А затем просто удалите один или два столбца, которые вы не хотите, а затем запустите. Я открыт для любых предложений легче, чем это.
Ответ 8
Попробуйте выполнить следующий запрос:
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;
Ответ 9
Есть только один способ достичь этого имени. Другого метода не найдено. Вы должны перечислить все имена столбцов
Ответ 10
Это не универсальное решение, но некоторые базы данных позволяют использовать регулярные выражения для указания столбцов.
Например, в случае Hive следующий запрос выбирает все столбцы, кроме ds и hr:
SELECT '(ds|hr)?+.+' FROM sales
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select#LanguageManualSelect-REGEXColumnSpecification
Ответ 11
Очевидно, SQL не был разработан программистами.
Ответ 12
Если вы используете DataGrip, вы можете сделать следующее:
- Введите свой оператор SELECT
SELECT * FROM <your_table>;
- Наведите курсор на
*
и нажмите Alt+Enter
- Вы получите всплывающее меню с опцией
Expand column list
- Нажмите на него, и он будет преобразован
*
с полным списком столбцов - Теперь вы можете удалить ненужные столбцы
Вот ссылка на пример того, как это сделать.