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