如何在 MySQL 中插入没有主键的 2 个表的记录?
How to insert records from 2 tables without the primary key in MySQL?
如何在 MySQL 中从 2 个没有主键的表中插入记录?
我想在下面插入 table_a
sql:
insert into table_a select
tc.id, tc.code,tb.name,tb.sordid,tb.others
from table_b tb
left join table_c tc
on sb.code = spir.code
但是SQL上面会报主键错误(table_c.id = table_a.id是主键),我只能用SQL[=17下面=]
insert into table_a select
tc.id, tc.code,tb.name,tb.sordid,tb.others
from table_b tb
left join table_c tc
on sb.code = spir.code where tc.id is not null
table_a
id code name sortid others
-----------------------------------
1 abc ASDAG 1 sfgsdf
1 abc asgasd 2 asd
1 abc asdgasd 3 sfgsdf
1 abc asdgas 4 asd
2 ad ASDAG 1 sfgsdf
2 ad sd 2 asd
2 ad sss 3 sfgsdf
3 adcs ASDAG 1 sfgsdf
3 adcs sd 2 asd
table_b
id code name sortid others
-----------------------------------
99 abc asgasd 1 asd
99 abc asdgasd 2 sfgsdf
6 ad ASDAG 1 sfgsdf
table_c
id code
----------
1 abc
2 ad
3 adcs
但这不是我需要的,如果您需要一些示例数据,请随时告诉我,非常感谢您的任何进步。
MySQL 提供了两种方法来避免在这种情况下插入行:
insert into table_a
select tc.id, tc.code,tc.name,tb.sordid,tb.others
from table_b tb left join
table_c tc
on sb.code = spir.code
where tc.id is not null
on duplicate key update id = values(id);
注意:这通过不插入行来避免错误。我不确定那是不是你真正想要的。
您也可以使用insert ignore
。
您的 table_a
列似乎不允许在 id
字段中使用空值,因此无法在此处插入空值。
您需要执行以下任一操作:
table_a.id
允许空值
- 在您的插入中添加一些翻译,以最终插入
id
字段的非空值。
如何在 MySQL 中从 2 个没有主键的表中插入记录?
我想在下面插入 table_a
sql:
insert into table_a select
tc.id, tc.code,tb.name,tb.sordid,tb.others
from table_b tb
left join table_c tc
on sb.code = spir.code
但是SQL上面会报主键错误(table_c.id = table_a.id是主键),我只能用SQL[=17下面=]
insert into table_a select
tc.id, tc.code,tb.name,tb.sordid,tb.others
from table_b tb
left join table_c tc
on sb.code = spir.code where tc.id is not null
table_a
id code name sortid others
-----------------------------------
1 abc ASDAG 1 sfgsdf
1 abc asgasd 2 asd
1 abc asdgasd 3 sfgsdf
1 abc asdgas 4 asd
2 ad ASDAG 1 sfgsdf
2 ad sd 2 asd
2 ad sss 3 sfgsdf
3 adcs ASDAG 1 sfgsdf
3 adcs sd 2 asd
table_b
id code name sortid others
-----------------------------------
99 abc asgasd 1 asd
99 abc asdgasd 2 sfgsdf
6 ad ASDAG 1 sfgsdf
table_c
id code
----------
1 abc
2 ad
3 adcs
但这不是我需要的,如果您需要一些示例数据,请随时告诉我,非常感谢您的任何进步。
MySQL 提供了两种方法来避免在这种情况下插入行:
insert into table_a
select tc.id, tc.code,tc.name,tb.sordid,tb.others
from table_b tb left join
table_c tc
on sb.code = spir.code
where tc.id is not null
on duplicate key update id = values(id);
注意:这通过不插入行来避免错误。我不确定那是不是你真正想要的。
您也可以使用insert ignore
。
您的 table_a
列似乎不允许在 id
字段中使用空值,因此无法在此处插入空值。
您需要执行以下任一操作:
table_a.id
允许空值
- 在您的插入中添加一些翻译,以最终插入
id
字段的非空值。