有条件地插入一行

发布于 2024-09-10 20:08:00 字数 211 浏览 4 评论 0原文

我想在表 A 中插入一行,但前提是表 B 中存在另一行。例如这样的事情...

IF EXISTS (SELECT * FROM B WHERE id=1)
    INSERT INTO A
        (id, value1, value2)
        VALUES (1, 'foo', 'bar')

但是这不起作用。会怎样?

I'd like to insert a row into table A, but only if another row in table B exists. For example something like this...

IF EXISTS (SELECT * FROM B WHERE id=1)
    INSERT INTO A
        (id, value1, value2)
        VALUES (1, 'foo', 'bar')

However that doesn't work. What will?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

假装爱人 2024-09-17 20:08:00
INSERT INTO A (value1, value2, value3)
    SELECT 'foo', 'bar', 'foo' FROM B WHERE ID = 1

这里的一个潜在问题是,如果多次满足您的条件,它将插入尽可能多的行,因此请调整您的查询,但它会执行您想要的操作,仅在满足选择上的条件时才插入。

INSERT INTO A (value1, value2, value3)
    SELECT 'foo', 'bar', 'foo' FROM B WHERE ID = 1

One potential problem here is if your condition is met more than once it will insert as many rows so adjust your query to that, but it will do what you want, only insert if the conditions on the select are met.

虐人心 2024-09-17 20:08:00

看看这个 MySQL 手册的一部分,它给出了 SELECT 的示例,但也许 INSERT 也可以以类似的方式工作?

Have a look at this piece of MySQL manual, it gives an example with SELECT, but maybe INSERT would also work in a similar fashion?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文