我有2张不相似的表。只有在table2
中找到具有类似值的记录时,才能通过某种方式将记录插入table1
?我正在使用php pdo
和mysql
例如:
让我们说table1
的值如下:
id
--
1
2
3
4
6
,然后
insert into table2 (id) values (3) // Will work, because id 3 exists in table1
insert into table2 (id) values (7) // Will not work, because id 7 does not exists in table1
现在,我这样做的方法是运行select count(id) where id = 3
,然后如果存在id
,则会插入它。繁琐!
有没有办法做到这一点,而不必先做select
然后insert
?
由于这只是一个开始,如果需要添加foreign key
等内容,我愿意做出更改。
此处运行的唯一查询是insert into table2 (id) values (3)
。只有在id = 3
中找到table1
时才需要这样做。值3
是用户提供的。
答案 0 :(得分:1)
如果ID
中的Table1
是唯一的,那么这将有效:
INSERT INTO Table2 (ID)
SELECT ID
FROM Table1
WHERE ID = 3;
如果ID=3
中存在Table1
,您将会插入一行。如果没有,则不会插入任何内容。
如果ID
中的Table1
不唯一,只需将DISTINCT
添加到SELECT
:
INSERT INTO Table2 (ID)
SELECT DISTINCT ID
FROM Table1
WHERE ID = 3;
答案 1 :(得分:0)
创建触发器
DELIMITER $$
CREATE
DEFINER = CURRENT_USER
TRIGGER `table2_check` BEFORE INSERT
ON table1
FOR EACH ROW BEGIN
if exists (select id from table1 where id = new.id) then
insert into table2 (id) values (new.id);
end if;
END$$
DELIMITER ;