如何向多个引用添加多行

rqcrx0a6  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(254)

假设我的数据库中有两个表。 person 以及 person_purchased_item .

id     name       has_purchased
1      Joe        1
2      Mark       0
3      Harry      0
4      Norly      1
5      Freya      0

购买物品的人

id     person_id     item_code
1      1             1001
2      1             1002
3      1             1003
4      1             1004
5      4             1005

在这种情况下,我想得到一个特定的人购买的物品,并查询那些从未购买过任何物品的人。
案例1
查询:

SELECT 
    person.id, person.name, person_purchased_item.item_code 
FROM person INNER JOIN person_purchased_item
    ON person.id = person_purchased_item.person_id
WHERE has_purchased = 1 AND id = 1;

结果:

id     name          item_code
1      Joe           1001
1      Joe           1002
1      Joe           1003
1      Joe           1004

案例2
查询:

SELECT * FROM person WHERE has_purchased <> 1;

结果:

id     name       has_purchased
2      Mark       0
3      Harry      0
5      Freya      0

现在问题来了:
如何编写一个查询,将所有joe购买的商品插入到每个从未购买过商品的人身上?所以他们每个人都有乔买的东西。

ars1skjm

ars1skjm1#

插入joe的购买记录与所有尚未购买的人的交叉连接:

INSERT INTO person_purchased_item (person_id, item_code)
SELECT p1.id, p2.item_code
FROM person p1
CROSS JOIN person_purchased_item p2
WHERE
    p1.has_purchased = 0 AND p2.person_id = 1;

相关问题