好的,所以我不知道如何告诉MySQL,如果他们共享相同的ID,那么两个不同的表中的两个值的差值,然后存储到另一个表中。我试图使用这段代码片段,它应该保留任何具有相同ID的值,但我想我做错了:
SELECT tableA.itemid FROM tableA INNER JOIN tableB ON tableA.itemid=tableB.itemid WHERE tableA.price <> tableB.price;tableA:
itemid | price
0 | 10
1 | 40
2 | 30tableB:
itemid | price
0 | 40
2 | 20
3 | 90(表A-表B) newTable:
itemid | price
0 | -30
2 | 10如果有人能帮我找到正确的方向,那就太好了。我对MySQL还是很陌生的,所以如果我也能获得一些链接到一些处理类似问题的教程,那也会更好。
发布于 2016-04-15 01:50:58
你的查询就快到了。只需向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将从tableB中的tableA列的值中减去tableA列的值。并将结果作为结果集中的列返回。在列"AS price_diff“中添加别名将使结果集中的列具有指定的名称。
可以从选择列表中删除表达式。添加额外的列是为了查看什么是触觉。以获得您想要返回的两列。
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 ... 发布于 2016-04-15 01:39:22
不幸的是,我不能添加评论,所以如果我假设您的itemId是唯一的。尝试此查询sql;)
SELECT a.itemid, a.price - b.price AS price
FROM tableA a, tableB b
WHERE a.itemid = b.itemidhttps://stackoverflow.com/questions/36636547
复制相似问题