根据当前行信息插入多对多table
Insert into a many-to-many table based on current row information
我有一个多对多 table 的产品和型号 ID。如果 id 在另一行中匹配,是否可以插入新行?
示例表:
| p_id | m_id |
+------+------+
| A | 2 |
| A | 3 |
| B | 1 |
| B | 2 |
| C | 1 |
SQL 脚本:
如果任何产品与模型 2 相关,则插入该产品和产品 4 的新行。
table 会变成:
| p_id | m_id |
+------+------+
| A | 2 |
| A | 3 |
| A | 4 |
| B | 1 |
| B | 2 |
| B | 4 |
| C | 1 |
我必须在 SQL 中执行此操作。更具体地说,Sequel Pro.
我没有使用过 Sequel Pro,所以我不知道我的语法是否正确,但也许我可以给你正确的逻辑。
在 MySQL 中,您可以使用 select 语句将新行插入 table。在您的情况下,您想要插入新行,其中 p_id
行的 m_id
为 2。我将从编写该查询开始:
SELECT DISTINCT p_id
FROM myTable
WHERE m_id = 2;
然后,您希望每个新行的 m_id
为 4。您可以在 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 示例。
我有一个多对多 table 的产品和型号 ID。如果 id 在另一行中匹配,是否可以插入新行?
示例表:
| p_id | m_id |
+------+------+
| A | 2 |
| A | 3 |
| B | 1 |
| B | 2 |
| C | 1 |
SQL 脚本:
如果任何产品与模型 2 相关,则插入该产品和产品 4 的新行。
table 会变成:
| p_id | m_id |
+------+------+
| A | 2 |
| A | 3 |
| A | 4 |
| B | 1 |
| B | 2 |
| B | 4 |
| C | 1 |
我必须在 SQL 中执行此操作。更具体地说,Sequel Pro.
我没有使用过 Sequel Pro,所以我不知道我的语法是否正确,但也许我可以给你正确的逻辑。
在 MySQL 中,您可以使用 select 语句将新行插入 table。在您的情况下,您想要插入新行,其中 p_id
行的 m_id
为 2。我将从编写该查询开始:
SELECT DISTINCT p_id
FROM myTable
WHERE m_id = 2;
然后,您希望每个新行的 m_id
为 4。您可以在 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 示例。