2012-07-16 90 views
0

我想执行一行INSERT,但只有当if条件为真时才执行INSERT。if语句为真时只执行INSERT

下面是伪代码中的一个基本示例(仅用于简化问题)。

"If there is a user id = 5 in the users table (using SELECT), execute: INSERT INTO someOtherTable ...()" 

任何帮助,非常感谢。

回答

3

如果users.id是主键或至少唯一

INSERT INTO someOtherTable 
SELECT 123, 456, 'a string value' 
FROM users 
WHERE id = 5 

非唯一的测试,你可以使用特殊的表道尔·

INSERT INTO someOtherTable 
SELECT 123, 456, 'a string value' 
FROM DUAL 
WHERE 5 IN (SELECT id FROM users WHERE id = 5) 
+0

123,456,“字符串值”的您通常会在VALUES()子句中指定的值? 刚刚在这里明确;我不想插入来自SELECT语句的值。我想首先执行一种类型的查询(检查涉及其他表的查询是否为真),然后使用来自PHP变量的值执行INSERT。 – 2012-07-17 09:42:40

+0

是的,有例子值'INSERT INTO t VALUES(123,456,'a')'AND'INSERT INTO t SELECT 123,456,'a'' is Equal – 2012-07-17 10:39:27