gpt4 book ai didi

mysql - 确定每一行是否存在于另一个 MySQL 表中

转载 作者:行者123 更新时间:2023-11-29 17:23:31 24 4
gpt4 key购买 nike

我有两个非常相似的表。例如,假设每行都有两个 ID 号和一个数据值。第一个 ID 号可以出现一次、两次或不包含,第二个 ID 号可以是 1 或 -1。数据值并不重要,但为了本示例,我们会说它是一个整数。对于每一对 ID 号,只能有一个数据值,因此,如果我有一个 ID 为 10 和 1 的数据点,则不会再有 10 和 1 行具有不同的数据值。同样,在另一个表中,ID 为 10 和 1 的数据点将与第一个表中的相同。我希望能够选择两个表中都存在的行,以便更改两个表中所有行中的数据值。到目前为止我的 MySQL 命令如下:

SELECT DISTINCT * FROM schema.table1
WHERE EXISTS (SELECT * from schema.table1
WHERE schema.table1.ID1 = schema.table2.ID1
and schema.table1.ID2 = schema.table2.ID2);

我希望能够让此代码选择 table1 中也在 table2 中的所有行,但允许我编辑 table1 值。

我知道,通过创建两个表的并集,我可以看到两个表中都存在的行,但是如果我更改合并集中的值,这是否允许我更改实际数据值?例如,如果我这样做:

SELECT DISTINCT * FROM schema.table1 inner join schema.table2
WHERE schema.table1.ID1 = schema.table2.ID1
schema.table1.ID2 = schema.table2.ID2;

如果我对从此查询中获取的行调用 UPDATE ,table1/table2 中的实际值是否会更改,或者该联合是否只是在动态内存中创建,而我只是更改值查询结束后会被删除吗?

最佳答案

更新如下:

UPDATE table1 SET data = whateverupdate
WHERE ID1 IN (SELECT ID1 from schema.table1
WHERE schema.table1.ID1 = schema.table2.ID1
and schema.table1.ID2 = schema.table2.ID2);

在内部 select 语句中,您无法执行 select * 您必须选择特定列。这应该有效,因为您的内部选择找到有问题的行并将其提供给您的更新语句。话虽如此,您的内部选择必须返回您需要的正确行,否则,错误的行将被更新。希望这会有所帮助。

关于mysql - 确定每一行是否存在于另一个 MySQL 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51106582/

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