在提出这个问题之前,我已经在Google和StockOverflow上搜索了很多条目。没有什么能解决我的问题。
有两个表格 - group_sale_bonuses
和members
。我想检查product_id "1"
中是否有group_sale_bonuses
的记录。
如果没有,我想将members
表中的所有记录插入group_sale_bonuses
product_id "1"
。
我的整体要求如下:
IF ((Select count(id) from group_sale_bonuses where product_id = 1) = 0) THEN
INSERT INTO group_sale_bonuses (member_id, product_id, quantity_counter, credit)
SELECT id, 1, 0, 0 FROM members
END IF
但是这个sql会导致错误。
我知道有关于Insert Ignore
,Where Not Exists
的解决方案。
但是这些条件检查是基于每条记录。我在members
表中有数千条记录。我想在上面的sql示例中进行一次条件检查。
顺便说一句,我将在Sql
网络应用程序中使用此Php
。
答案 0 :(得分:0)
您只需在WHERE
子句中设置代码,而不是IF
。
INSERT INTO group_sale_bonuses(
member_id,
product_id,
quantity_counter,
credit)
SELECT
id, 1, 0, 0 FROM members
WHERE(
SELECT
count(id) FROM group_sale_bonuses
WHERE product_id = 1
) = 0;
答案 1 :(得分:0)
这应该适用于所有product_id的
SELECT m.product_id, m.member_id FROM members AS m
LEFT JOIN group_sale_bonuses AS gsb ON gsb.product_id = m.product_id
WHERE gsb.product_id IS NULL ;
您可以通过添加到where子句
将其过滤到特定的product_idSELECT m.product_id, m.member_id FROM members AS m
LEFT JOIN group_sale_bonuses AS gsb ON gsb.product_id = m.product_id
WHERE gsb.product_id IS NULL AND m.product_id = 1;
看看这个SQLfiddle:http://sqlfiddle.com/#!2/8482c/2