Mysql 使用SELECT和一些默认值插入到
我有桌子Mysql 使用SELECT和一些默认值插入到,mysql,sql,Mysql,Sql,我有桌子 person +--------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+----------------+ | id | int(1
person
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
及
我想执行以下语句(对于每个person
在聊天室中添加一行person.id
和DEFAULT
以及id
和col2
列的NULL
值)
但它不起作用。
有人可以更正查询吗?您的id
字段是自动增量
,因此您可以将其从查询中删除,它将自动将行设置为下一个值。另外,由于col2
的默认值为NULL
,因此也可以将其排除在查询之外。它将自动设置为默认值
INSERT INTO chatroom (col1) SELECT id FROM person
第一个列表必须包含列名,而不是值。要插入默认值,只需从列表中忽略它:
INSERT INTO chatroom (col1, col2)
SELECT id, NULL
FROM person
查询中不需要包含默认值
。试试这个:
插入聊天室(col1,col2)选择id为col1,person为空;
当INSERT语句中不包含列时,它会尝试使用默认值(如果可用)。因为您的聊天室
表的id
列是自动递增的,所以不需要传递此列的值。在表中插入新行时,此列具有自动值。因此不需要默认值
其次,col2
将根据您的表定义接受null
,因此也不需要传递此列的值,直到您有一些需要放入此列的值
所以您只需为此指定列,您就有了值
因此,如果您想在col2
列中插入null
值,请使用
INSERT INTO chatroom (col1)
SELECT id FROM person;
INSERT INTO chatroom (col1,col2)
SELECT id, col2 FROM person;
所以,如果您想在col2
列中插入一些值,请使用
INSERT INTO chatroom (col1)
SELECT id FROM person;
INSERT INTO chatroom (col1,col2)
SELECT id, col2 FROM person;