Mysql 如果数据没有保留在sqlite中特定外键的表中,如何在列中添加数据
假设我有一个名为Mysql 如果数据没有保留在sqlite中特定外键的表中,如何在列中添加数据,mysql,sql,sqlite,Mysql,Sql,Sqlite,假设我有一个名为category的表,其中有两列cat\u id和cat\u name 这张桌子看起来像这样 cat_id cat_name 1 Science 2 Arts insert into item (item_name,cat_id) select 'abdul',category.cat_id from category where NOT EXISTS (select * from item WHERE category.cat_id = i
category
的表,其中有两列cat\u id
和cat\u name
这张桌子看起来像这样
cat_id cat_name
1 Science
2 Arts
insert into item (item_name,cat_id) select 'abdul',category.cat_id from category where NOT EXISTS (select * from item WHERE category.cat_id = item.foreign_id)
我有另一个名为item
的表,其中category
表的cat\u id
是外键,该表如下所示
item_id item_name cat_id
1 math 1
2 literature 2
3 physics 1
现在我想写一个这样的查询,如果我在科学
中再次插入数学,那么它不会插入,但是如果我想在艺术
中插入数学,那么它会成功插入。请记住,我手中只有item\u name
和cat\u name
,我想在item表中添加item\u name
和该cat\u name
的cat\u id
到目前为止我所做的就是这样
cat_id cat_name
1 Science
2 Arts
insert into item (item_name,cat_id) select 'abdul',category.cat_id from category where NOT EXISTS (select * from item WHERE category.cat_id = item.foreign_id)
但是这个结果让我很尴尬,有人能帮忙吗?你基本上没有意识到这只是一个问题。当您尝试在同一个表中插入两次“math”时,这一点变得很明显。这是一种多对多的关系,而不是一对多的关系。经验法则:多对多关系总是生成一个表 适当的表结构如下所示(包括示例数据): 类别:(类别id) 项目:(项目id) 分类项目(类别id、项目id)
在圆括号中,您将看到主键。请记住,最后一个表有一个复合PK。这将使您不必对同一类别重复计算。那么它是MySQL还是SQLite?SQLite还是MySQL,如果您能帮助解决任何问题,请告诉我
cat_id item_id
1 1
1 3
2 2