只有当id存在于另一个表中时,Mysql才会插入一行

时间:2016-09-06 18:32:26

标签: mysql

我有2个简单的表

  • table1 - > p_id | S_ID
  • table2 - > p_id | S_ID

两张桌子是一样的。 p_id ai值

我想在table2中插入一行,但只有在table1中存在p_id时才**。这个有可能? (MySQL的)

INSERT INTO table1 (p_id, s_id)
SELECT * FROM (SELECT '100', '2') AS tmp
WHERE NOT EXISTS (SELECT p_id FROM table2 WHERE p_id = '100')
LIMIT 1

2 个答案:

答案 0 :(得分:1)

您可以根据任何SELECT查询插入表中。例如:

INSERT INTO table2 (p_id, s_id)
SELECT p_id, 2 FROM table1 WHERE p_id = 100;

如果table1中有零行且指定了p_id值,则这是一个无操作。也就是说,它在表2中插入零行。如果table1中有1行具有该p_id值,则将其插入table2。

不需要LIMIT 1,因为如果p_id是主键,则保证只有1或0行具有给定值。

答案 1 :(得分:0)

试试这个

Insert into table2 (p_id,s_id) Select p_id,'2' as s_id FROM table1 where p_id=100 LIMIT 1