首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个MySQL表并抓住差异

问比较两个MySQL表并抓住差异
EN

Stack Overflow用户
提问于 2016-04-15 00:56:05
回答 2查看 27关注 0票数 1

好的,所以我不知道如何告诉MySQL,如果他们共享相同的ID,那么两个不同的表中的两个值的差值,然后存储到另一个表中。我试图使用这段代码片段,它应该保留任何具有相同ID的值,但我想我做错了:

代码语言:javascript
复制
SELECT tableA.itemid FROM tableA INNER JOIN tableB ON tableA.itemid=tableB.itemid WHERE tableA.price <> tableB.price;

tableA:

代码语言:javascript
复制
 itemid   |   price
   0      |     10
   1      |     40
   2      |     30

tableB:

代码语言:javascript
复制
 itemid   |   price
   0      |     40
   2      |     20
   3      |     90

(表A-表B) newTable:

代码语言:javascript
复制
 itemid   |   price
   0      |    -30
   2      |     10

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-15 01:50:58

你的查询就快到了。只需向SELECT列表添加一个表达式即可。该表达式将计算要作为列返回的值。

代码语言:javascript
复制
 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; 

在本例中,这是一个相当简单的表达式:

代码语言:javascript
复制
 a.price - b.price

这样,MySQL将从tableB中的tableA列的值中减去tableA列的值。并将结果作为结果集中的列返回。在列"AS price_diff“中添加别名将使结果集中的列具有指定的名称。

可以从选择列表中删除表达式。添加额外的列是为了查看什么是触觉。以获得您想要返回的两列。

代码语言:javascript
复制
 SELECT a.itemid
      , a.price - b.price AS diff
   FROM ... 

如果要将结果集存储为另一个表(我不认为您真的想这样做),那么可以这样做。

代码语言:javascript
复制
CREATE TABLE new_foo
AS
SELECT a.itemid
     , a.price - b.price AS diff
  FROM ... 

理想情况下,我们会修改它以标识主键,以及列的数据类型等。

代码语言:javascript
复制
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 ... 
票数 0
EN

Stack Overflow用户

发布于 2016-04-15 01:39:22

不幸的是,我不能添加评论,所以如果我假设您的itemId是唯一的。尝试此查询sql;)

代码语言:javascript
复制
SELECT a.itemid, a.price - b.price AS price
FROM tableA a, tableB b
WHERE a.itemid = b.itemid
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36636547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档