如何在MySQL中进行条件INSERT?

时间:2012-10-16 23:06:34

标签: mysql sql

我有两张桌子。

资产表

   |  AID  | NAME | 
   | 1234  | item1|

项目表

   |  BID  | ITEM | 
   |       |      |

问题:仅当资产表中存在我要插入的相同数据时,如何将数据插入项目表?或甚至可能吗?假设我只能在资产表AID值(1234)存在时才插入项目表BID值(1234)。 我试过这样做:

INSERT INTO 'item'('BID') VALUES (1234) WHERE 'item'.BID='assets'.AID

3 个答案:

答案 0 :(得分:1)

INSERT INTO item (BID) SELECT assets.aid FROM assets WHERE aid = 1234;

如果您可以找到多个匹配且不希望插入多行,请在SELECT中使用DISTINCT。

另外,如果只想限制数据库中的插入,请使用外键约束。一旦你有了,你不需要有条件地插入。如果父表中尚未存在辅助,只需插入并让数据库失败。

答案 1 :(得分:0)

您不能将WHEREINSERT语句一起使用,因为mysql不支持它。 只需删除WHERE部分就可以了。

但是你必须分别检查数据是否存在于另一个表中(或在子查询中)。

答案 2 :(得分:0)

您可以使用动态SQL并在以后执行它,但这很难看。只做IF条件。如果记录存在于Value中,则运行insert,否则不运行。

尝试这样的事情:

(SELECT Count(*) FROM Value WHERE BID = '1234') > 0
    --your insert--