考虑以下两个表
Table A:
id int auto_increment
with 2 rows of data.
id
1
2
Table B:
id auto_increment
aid reference to A.id
with 3 rows of data
id aid
1 1
2 2
3 2
如果现在表A已插入2行
Table A:
id
1
2
3
4
那么,如何编写insert语句以便它可以作为结果插入表B
Table B:
id aid
1 1
2 2
3 2
4 3
5 4
6 4
7 5
8 6
9 6
问题仅限于研究。我知道有很多方法可以做到,但我只是想知道是否可以通过使用sql或只是在mysql中完成?
更新
对不起,这个问题不清楚了。让我说清楚。
表B中的数据与表A有关.Baid = A.id
表A中的新数据,即A.id,是顺序的,也与前两个id有关。这意味着1和3具有相同的含义,2和4也是。
在表B的插入中,它应该同时考虑1.和2.这意味着,由于一个辅助= 1和两个辅助= 2,那么需要插入表B的数据是一个辅助= 3,两个援助= 4,一个援助= 5,两个援助= 6。
问题:这可以通过编程轻松完成,但是,我只是想知道可以在插入语句中完成而不用Mysql编程吗?
答案 0 :(得分:0)
假设您正在将ID插入表A,
INSERT INTO [Table B](aid) VALUES ([THE ID])
这将插入指定的ID,在表B的援助栏中。
否则,如果要匹配值,可以使用NOT IN来检测不相似的值,则必须插入这些值, 这将选择表B中不存在的所有ID:
SELECT id
FROM [Table A]
WHERE [Table A].id Not In (SELECT aid FROM [Table B])
...然后(取决于您使用它,PHP?然后fletch数据(应该看起来像这样))...
while($row = mysqli_fetch_assoc(...))
{
INSERT INTO [Table B](aid) VALUES($row['aid'])
}