gpt4 book ai didi

mysql - 将数据从自身和另一个表 mysql 插入到表中

转载 作者:搜寻专家 更新时间:2023-10-30 23:45:51 24 4
gpt4 key购买 nike

我有 2 个表:

table1 包含 roleid

table2包含stringtext,table1_roleid(是table1中roleid字段的FK)

table2 现在包含 5 个条目,每个条目具有相同的 table1_roleid 值和不同的 stringtext 值,我想复制 stringtext 值在同一个表中,但具有不同的 table1_roleid 值,我想从 table1 中获取。

为了进一步解释这里有一个表示:

table1
+--------+
| Roleid |
+--------+
| 1 |
| 2 |
| 3 |
+--------+

table2
+------------+---------------+
| stringtext | table1_roleid |
+------------+---------------+
| text1 | 1 |
| text2 | 1 |
| text3 | 1 |
| text4 | 1 |
| text5 | 1 |
+------------+---------------+

table2 的最终结果应该是:

table2
+------------+---------------+
| stringtext | table1_roleid |
+------------+---------------+
| text1 | 1 |
| text2 | 1 |
| text3 | 1 |
| text4 | 1 |
| text5 | 1 |
| text1 | 2 |
| text2 | 2 |
| text3 | 2 |
| text4 | 2 |
| text5 | 2 |
| text1 | 3 |
| text2 | 3 |
| text3 | 3 |
| text4 | 3 |
| text5 | 3 |
+------------+---------------+

我想创建一个复制 table2 的临时表,每次我都可以更新临时表中的 table1_roleid 但我正在寻找一种更智能的方法,我可以把例如在一个循环中并在没有临时表的情况下插入同一个表。

最佳答案

您可以使用交叉连接 生成您想要的所有行。因为结果已经包含 table2 中的一些行,所以您需要将它们过滤掉。这是一种方法:

insert into table2(string_text, table1_roleid)
select t2.string_text, t1.roleid
from table2 t2 cross join
table1 t1
where t1.roleid <> 1;

更通用的方法是将 where 子句更改为:

    where not exists (select 1
from table tt2
where tt2.string_text = t2.string_text and
tt2.table1_roleid = t1.roleid
)

关于mysql - 将数据从自身和另一个表 mysql 插入到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28733469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com