我有两张桌子。
资产表
| AID | NAME | | 1234 | item1|
项目表
| BID | ITEM | | | |
问题:仅当资产表中存在我要插入的相同数据时,如何将数据插入项目表?或甚至可能吗?假设我只能在资产表AID值(1234)存在时才插入项目表BID值(1234)。 我试过这样做:
INSERT INTO 'item'('BID') VALUES (1234) WHERE 'item'.BID='assets'.AID
答案 0 :(得分:1)
INSERT INTO item (BID) SELECT assets.aid FROM assets WHERE aid = 1234;
如果您可以找到多个匹配且不希望插入多行,请在SELECT中使用DISTINCT。
另外,如果只想限制数据库中的插入,请使用外键约束。一旦你有了,你不需要有条件地插入。如果父表中尚未存在辅助,只需插入并让数据库失败。
答案 1 :(得分:0)
您不能将WHERE
与INSERT
语句一起使用,因为mysql不支持它。
只需删除WHERE
部分就可以了。
但是你必须分别检查数据是否存在于另一个表中(或在子查询中)。
答案 2 :(得分:0)
您可以使用动态SQL并在以后执行它,但这很难看。只做IF条件。如果记录存在于Value中,则运行insert,否则不运行。
尝试这样的事情:
(SELECT Count(*) FROM Value WHERE BID = '1234') > 0
--your insert--