插入子查询条件

时间:2015-07-15 23:06:31

标签: mysql select insert-into

我有这个查询

INSERT INTO subitems_detail (groepid, filiaalid, subitemsid)
SELECT DISTINCT (SELECT id FROM prijsgroepen), 0, subitems.id FROM subitems;

MySQL prijsgroepen.id时,如何创建1仅插入行的条件?

我试过这样的事情,但是数据库仍会插入行并将0分配给groepid,而表格应为空:

INSERT INTO subitems_detail (groepid, filiaalid, subitemsid)
SELECT DISTINCT (SELECT id FROM prijsgroepen WHERE id != 1), 0, subitems.id FROM subitems;

1 个答案:

答案 0 :(得分:2)

INSERT INTO subitems_detail (groepid, filiaalid, subitemsid)
SELECT DISTINCT (SELECT id FROM prijsgroepen) As groepid, 0, subitems.id 
FROM subitems
HAVING greopid <> 1
;

这假设prijsgroepen中只有一行;否则我很确定查询会破坏。

子查询可能更有用SELECT COUNT(1) FROM prijsgroepen WHERE id != 1并将HAVING调整为HAVING greopid = 0

对于每个非一个prijsgroepen.id的一组子项:

INSERT INTO subitems_detail (groepid, filiaalid, subitemsid)
SELECT DISTINCT prijsgroepen.id, 0, subitems.id 
FROM prijsgroepen, subitems
WHERE prijsgroepen.id <> 1
   AND prijsgroepen.id NOT IN (SELECT groepid FROM subitems_detail)
;

AND行是可选的,以防止重复以前处理的prijsgroepen.id值。