根据MySQL语句中的另一个表列动态确定列值

时间:2013-11-03 14:11:08

标签: java mysql sql sql-insert

有没有办法在MySQL中执行像伪代码中的查询:

INSERT INTO table_a(a, b, c) SELECT table_b.a, table_b.b, IF (table_b.c <100) 500 else 1000 WHERE ...

我知道我可以将两个单独的查询作为一个事务但我想知道是否有一种方法可以根据另一个表中的另一列插入一个列的值,而不会超过记录两次。

1 个答案:

答案 0 :(得分:1)

是的,有。 您可以使用CASE构造:

INSERT INTO table_a (a, b, c) 
SELECT table_b.a, table_b.b, CASE WHEN table_b.c < 100 THEN 500 else 1000 END
FROM   table_b
WHERE  ...