1

我有一个多对多的产品和模型 ID 表。如果 id 在另一行匹配,是否可以插入新行?

示例表:

| p_id | m_id |
+------+------+
|  A   |  2   |
|  A   |  3   |
|  B   |  1   |
|  B   |  2   |
|  C   |  1   |

SQL 脚本:

如果任何产品与模型 2 相关,则插入该产品和产品 4 的新行。

该表将变为:

| p_id | m_id |
+------+------+
|  A   |  2   |
|  A   |  3   |
|  A   |  4   |
|  B   |  1   |
|  B   |  2   |
|  B   |  4   |
|  C   |  1   |

我必须在 SQL 中执行此操作。更具体地说,Sequel Pro。

4

1 回答 1

1

我没有使用 Sequel Pro,所以我不知道我是否有正确的语法,但也许我可以给你正确的逻辑。

在 MySQL 中,您可以使用 select 语句将新行插入到表中。在您的情况下,您想插入具有2p_id的行的新行m_id。我将从编写该查询开始:

SELECT DISTINCT p_id
FROM myTable
WHERE m_id = 2;

然后,您希望每个新行都有一个m_id4。您可以在 select 子句中将其设为常量:

SELECT DISTINCT p_id, 4 AS m_id
FROM myTable
WHERE m_id = 2;

这将为您提供要插入的行:

| p_id | m_id |
+------+------+
|  A   |  4   |
|  B   |  4   |

现在,要插入这些行,语法如下所示:

INSERT INTO myTable (col1, col2) myQuery;

这是我使用的:

INSERT INTO myTable (p_id, m_id) SELECT DISTINCT p_id, 4 FROM myTable WHERE m_id = 2;

这是一个SQL Fiddle示例。

于 2015-01-06T16:50:27.047 回答