ВЫБЕРИТЕ все (кроме одного столбца как ноль) - PullRequest
8 голосов
/ 17 мая 2011

в mysql, возможно ли получить все столбцы и данные из таблицы, но выбрать столбец идентификатора как NULL?

Что-то вроде

SELECT *, id AS (SELECT '') FROM my_table WHERE 1

Я хочу получить столбец идентификатора, чтобы он не испортил счетчик столбцов для последующей загрузки данных, но я хочу исключить значение столбца, чтобы он не вызывал конфликтов ключей.

Спасибо!

Ответы [ 7 ]

9 голосов
/ 17 мая 2011

Таким образом, невозможно использовать SELECT * и заменить один из столбцов другим значением.

Если вы не хотите использовать оператор select, представленный в коде вашего приложения, вы можете создатьпредставление с заполненными полями и идентификатором обнуляется.Вам все равно придется назвать все столбцы хотя бы один раз.

select NULL as ID, t.col2, t.col3, t.col4 from mytable t where col2 = 1

Вот простой способ получить все имена столбцов:

SELECT column_name FROM information_schema.columns WHERE table_name = mytable
5 голосов
/ 17 мая 2011
SELECT NULL AS ID, Column1, Column2, ..., ColumnN
    FROM my_table
1 голос
/ 17 мая 2011

Поскольку это звучит так, как будто это в любом случае является подготовкой к дампу данных, используйте временную таблицу

CREATE TEMP TABLE t000 AS SELECT * FROM my_table; -- or INSERT INTO
UPDATE t000 SET id = NULL;
1 голос
/ 17 мая 2011

А как насчет

SELECT *, NULL AS id FROM my_table

Вы получите список id дважды, поэтому вам нужно расширить * на все имена столбцов, для каждой таблицы, на которой вы хотите, чтобы это выполнялось.

(Если вы хотите, чтобы имена столбцов извлекались автоматически, вы, вероятно, можете использовать специфичные для поставщика функции; я не могу вспомнить, есть ли в MySQL какие-либо для этой ситуации).

0 голосов
/ 17 мая 2011

Действительно реляционный язык Учебное пособие D позволяет выражать проекцию (все другие соответствующие реляционные операторы) в терминах атрибутов, которые нужно удалить, вместо атрибутов, которые должны быть сохранены, например,

my_relvar { ALL BUT ID }

(но, будучи действительно реляционным Учебником D, конечно, не имеет понятия ноль!)

К сожалению, в SQL нет такой языковой функции, и вы должны написать все названия столбцов от руки.

0 голосов
/ 17 мая 2011

Вы можете сделать что-то вроде:

SELECT null AS id, t.* FROM my_table t

Но это будет включать идентификатор дважды.Вам нужно будет указать столбцы, если вам нужен только столбец с нулевым идентификатором.

SELECT null As id, t.col1, t.col2 FROM my_table t
0 голосов
/ 17 мая 2011

Вы не можете этого сделать. Это не разрешено в SQL. Вы должны написать все поля и затем сказать ноль для идентификатора.

SELECT a,b,c,d,e, id as NULL from table

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...