gpt4 book ai didi

sql - 如何在具有相同结构的两个 MySQL 表中选择不同的行?

转载 作者:行者123 更新时间:2023-11-29 02:37:46 26 4
gpt4 key购买 nike

我有两个表,A 和 B,它们具有相同的结构(大约 30 多个字段)。是否有一种简短、优雅的方法来连接这些表并只选择一个或多个列不同的行?我当然可以编写一些脚本来创建包含所有列名的查询,但也许有一个仅限 SQL 的解决方案。

换句话说:是否有一个简短的替代品:

SELECT *
FROM table_a a
JOIN table_b b ON a.pkey=b.pkey
WHERE a.col1 != b.col2
OR a.col2 != b.col2
OR a.col3 != b.col3 # .. repeat for 30 columns

最佳答案

考虑到数据,没有捷径可走。事实上,这是唯一的可靠方法。您可能需要注意的一件事是正确比较 NULL-able 列中的 NULL 值。使用 OR 的查询往往很慢,更不用说它是否在 30 列上。

此外,您的查询将不会包含 table_b 中的记录,这些记录在 table_a 中没有对应的记录。所以理想情况下,您会使用 FULL JOIN

如果您需要经常执行此操作,那么您可以引入某种额外的数据列,当行中的任何内容发生变化时,该数据列总是会更新。这可以像在 UPDATE/INSERT 触发器的帮助下更新的 TIMESTAMP 列一样简单。然后当你比较的时候,你甚至知道哪条记录是最近的。但同样,这不是防弹解决方案。

关于sql - 如何在具有相同结构的两个 MySQL 表中选择不同的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2456638/

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