我有一个多对多的产品和模型ID表。如果ids在另一行中匹配,是否可以插入新行?
示例表:
| 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。
答案 0 :(得分:1)
我没有和Sequel Pro合作,所以我不知道我是否有正确的语法,但也许我可以给你正确的逻辑。
在MySQL中,您可以使用select语句将新行插入表中。在您的情况下,您希望插入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示例。