“比较两个表之间的MySQL中的行

"Comparing Rows in MySQL between two tables

提问人:Soumya Mannava 提问时间:11/16/2023 更新时间:11/16/2023 访问量:44

问:

“我有两张桌子,'公告'和'temp_announcement'。“announcement”表包含 15 行,而“temp_announcement”表包含 21 行。我需要比较这两个表之间的行并确定差异。由于“公告”表有 15 行,而“temp_announcement”表有 21 行,因此我想打印“temp_announcement”表中存在的另外 6 行。

“我尝试使用EXCEPT运算符来比较表,但遇到了错误。查询未提供预期结果。关于如何正确使用EXCEPT 或替代方法的任何见解或更正将不胜感激。

“如何比较两个表以找到不同的行?” “我可以使用什么 SQL 查询来实现此结果?” “有没有有效的方法可以识别MySQL中两个表之间的不匹配行?”

sql mysql-workbench

评论

0赞 Akina 11/16/2023
我尝试使用 EXCEPT 运算符来比较表,但遇到错误。什么是MySQL版本?需要 MySQL 8.0.31 及更高版本。
0赞 Amit Mohanty 11/16/2023
这回答了你的问题吗?Mysql 比较两个表并仅显示差异

答:

0赞 Akina 11/16/2023 #1
SELECT column,
       CASE SUM(tnum) WHEN 1 THEN 'In table1 only'
                      WHEN 2 THEN 'In table2 only'
                      ELSE 'Something went wrong'
                      END `In what table`
FROM (SELECT column, 1 AS tnum FROM table1
      UNION
      SELECT column, 2         FROM table2) combine
GROUP BY column
HAVING SUM(tnum) < 3;

如果你只需要单侧差值,那么

SELECT column
FROM table1
WHERE NOT EXISTS ( SELECT NULL
                   FROM table2
                   WHERE table1.column = table2.column );