gpt4 book ai didi

mysql - 比较 2 个 MySQL 表并找出差异

转载 作者:行者123 更新时间:2023-11-30 22:21:00 27 4
gpt4 key购买 nike

好吧,所以我想不出如何告诉 MySQL 在 2 个不同的表中取 2 个值的差值(如果它们共享相同的 ID,然后将其存储到另一个表中)。我尝试使用这个应该保留具有相同 ID 的任何值的代码段,但我想我做错了:

SELECT tableA.itemid FROM tableA INNER JOIN tableB ON tableA.itemid=tableB.itemid WHERE tableA.price <> tableB.price;

表A:

 itemid   |   price
0 | 10
1 | 40
2 | 30

表B:

 itemid   |   price
0 | 40
2 | 20
3 | 90

(表A-表B)新表:

 itemid   |   price
0 | -30
2 | 10

如果有人能帮助我指明正确的方向,那就太好了。我对 MySQL 还是比较陌生,所以如果我还能获得一些指向处理类似问题的教程的链接,那也很好。

最佳答案

您的查询就快完成了。您只需向 SELECT 列表添加一个表达式。该表达式将计算您想要作为列返回的值。

 SELECT a.itemid
, a.price
, b.price
, a.price - b.price AS price_diff
FROM tableA a
JOIN tableB b
ON b.itemid = a.itemid
WHERE b.price <> a.price;

在这种情况下,这是一个相当简单的表达式:

 a.price - b.price

这样,MySQL 将从表 A 中的价格列的值中减去表 B 中的价格列的值。并将结果作为结果集中的一列返回。向列“AS price_diff”添加别名将为结果集中的列指定名称。

您可以从 SELECT 列表中删除表达式。添加额外的列是为了查看发生了什么。只获取您想要返回的两列。

 SELECT a.itemid
, a.price - b.price AS diff
FROM ...

如果您获取该结果集并将其存储为另一个表(我不认为您真的想这样做)但这样做是可能的。

CREATE TABLE new_foo
AS
SELECT a.itemid
, a.price - b.price AS diff
FROM ...

理想情况下,我们会修改它来识别主键和列的数据类型等。

CREATE TABLE new_foo
( itemid BIGINT NOT NULL PRIMARY KEY
, price_diff DECIMAL(20,2) COMMENT 'difference in price'
) ENGINE=InnoDB
AS
SELECT a.itemid AS itemid
, a.price - b.price AS price_diff
FROM ...

关于mysql - 比较 2 个 MySQL 表并找出差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36636547/

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