SELECT all(但是一列为null)

时间:2011-05-16 21:35:17

标签: mysql sql select

在mysql中

,是否可以从表中获取所有列和数据,但是将ID列选为NULL?

这样的东西
SELECT *, id AS (SELECT '') FROM my_table WHERE 1

我想拉入ID列,因此它不会弄乱后续数据加载的列数,但我想消除列的值,因此不会导致密钥冲突。

谢谢!

7 个答案:

答案 0 :(得分:9)

因此,无法使用SELECT *并将其中一列替换为其他值。

如果您不想使用应用程序代码中提供的select语句,则可以创建一个视图,其中填充了这些字段并且ID已清空。您仍需要至少为所有列命名一次。

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

答案 1 :(得分:5)

SELECT NULL AS ID, Column1, Column2, ..., ColumnN
    FROM my_table

答案 2 :(得分:1)

怎么样?
SELECT *, NULL AS id FROM my_table

您将id列出两次,因此您需要将*展开到所有列名称,以便为要运行的每个表扩展。

(如果你想自动提取列名,你可以使用特定于供应商的功能;我不记得MySQL是否有这种情况)。

答案 3 :(得分:1)

因为听起来这仍然是数据转储的准备,所以使用临时表

CREATE TEMP TABLE t000 AS SELECT * FROM my_table; -- or INSERT INTO
UPDATE t000 SET id = NULL;

答案 4 :(得分:0)

你做不到。这在SQL中是不允许的。你应该写所有字段,然后为id说出null。

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

答案 5 :(得分:0)

您可以执行以下操作:

SELECT null AS id, t.* FROM my_table t

但它会包含两次id。如果只需要null id列,则需要指定列。

SELECT null As id, t.col1, t.col2 FROM my_table t

答案 6 :(得分:0)

真正的关系语言Tutorial D允许投影(所有其他相关的关系运算符)以要删除的属性而不是要保留的属性表示。

my_relvar { ALL BUT ID }

(但真正的关系教程D当然没有null的概念!)

可悲的是,SQL没有这样的语言功能,你必须用手写所有的列名。