0

我有两张桌子。

资产表

   |  AID  | NAME | 
   | 1234  | item1|

项目表

   |  BID  | ITEM | 
   |       |      |

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

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

3 回答 3

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

如果您可能找到多个匹配项并且不想插入多于一行,请在 SELECT 中使用 DISTINCT。

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

于 2012-10-17T00:49:13.867 回答
0

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

尝试这样的事情:

(SELECT Count(*) FROM Value WHERE BID = '1234') > 0
    --your insert--
于 2012-10-16T23:41:51.727 回答
0

您不能使用WHEREINSERT语句,因为 mysql 不支持它。只需卸下WHERE零件,它应该可以工作。

但是您必须单独检查数据是否存在于另一个表中(或在子查询中)。

于 2012-10-16T23:10:42.307 回答