如何使用Mysql的IF EXIST进行验证?

时间:2012-02-22 22:39:46

标签: mysql

我似乎无法正确使用语法。我想在允许插入另一条记录之前检查一个表的值。

这样的事情:

IF EXISTS (SELECT * FROM rooms WHERE id = 1)
THEN
INSERT INTO other_table (room_id) VALUES (1)
END IF

我只是想确保特定记录存在才能被允许输入另一个表格...为了更进一步,我实际上想确保存在一些事情......

IF EXISTS (SELECT * FROM rooms WHERE id = 1) AND (SELECT * FROM guests WHERE guest_id = 10)
THEN
INSERT INTO other_table (room_id,guest_id) VALUES (1,10)
END IF

我还没有处理交易或存储过程,所以如果我需要先了解所有这些,我会很难过。

1 个答案:

答案 0 :(得分:1)

您可以使用INSERT INTO ... SELECT

INSERT INTO other_table (room_id) 
SELECT 1 FROM rooms WHERE id  =1 GROUP BY id

GROUP BY只是为了确保子查询返回不超过1行;如果rooms.id是唯一的,则不需要它。

对于多个表:

INSERT INTO other_table (room_id,guest_id) 
SELECT 1, 
10
FROM rooms WHERE id = 1 and exists (SELECT 1 FROM guests WHERE guest_id = 10) LIMIT 1;