我想从另一个不完整的表中插入数据,因此NOT NULL字段中的某些值必须为空。
例如,我有两个表:人员和人员临时
在***人***表中,我有很多字段:permit_number、first_name、last_name、gender、tel 等。在***peopleTemp***表中,我只有 permit_number、first_name、last_name 和一个特殊字段 updated,它们是在UPDATE查询后设置的。
现在我想插入一个人,他们不存在于***人**中。 性别 * 和 * 电话 * 不是空的,但必须为空。我尝试:
INSERT INTO people p1 (gender, tel, permit_number, first_name, last_name)
VALUES ('','', (
SELECT permit_number, first_name, last_name
FROM peopleTemp p2
WHERE p2.updated = 0))
但我得到这个错误:SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)
你能帮我解决这个问题吗?先谢谢你了!
其他问题:我可以在查询结束时输入SET p2.updated = 1
吗?
2条答案
按热度按时间qmelpv7a1#
您可以使用
insert . . . select
来修正语法错误:我建议您使用
NULL
而不是空字符串来表示缺少的值。nzk0hqpo2#
对于您的附加问题..不,您不能。
SET
可与UPDATE..
一起使用。如果您要在完成INSERT
后更新p2.updated = 1
,则必须对peopleTemp
表JOIN
和people
表运行附加的UPDATE
查询以进行验证。类似以下内容应该有效: