如何在mysql中减去两个具有不同列数的表

时间:2014-09-25 18:42:17

标签: php mysql

我已经在每个表中创建了两个具有不同列数的表,并且两个列名在这两个表中是相同的。我如何使用MINUS运算符?帮助

3 个答案:

答案 0 :(得分:1)

最简单的方法就是这样 -

SELECT `table1`.`foo` - `table2`.`foo` AS `fooTotal`
FROM `table1`, `table2`

但是您可能还有其他我们无法预测的问题,因为我们没有看到您的表架构或使其正常工作所需的任何其他详细信息。

答案 1 :(得分:1)

您正在寻找类似的东西:

SELECT t1.field1 - t2.field1 AS Field1Diff,
       t1.field2 - t2.field2 AS Field2Diff,
       t1.field3 - t2.field3 AS Field3Diff,
       and blah blah blah etc
FROM table1 t1
  INNER JOIN table2 t2 on t1.sameField1 = t2.sameField 
                      AND t1.sameField2 = t2.sameField2

答案 2 :(得分:0)

MySQL不支持MINUS集合运算符,因此您将无法使用它。

你想要的可能是反连接模式。返回一个表中没有另一个表中“匹配”行的所有行。

作为示范:

 CREATE TABLE foo (id INT, fum VARCHAR(10));
 INSERT INTO foo VALUES (1,'a'),(1,'b'),(1,'c'),(2,'d'),(2,'e'),(3,'f');

 CREATE TABLE bar (id INT);
 INSERT INTO bar VALUES (2),(3),(3),(3);

Ant-join模式是一个LEFT JOIN,用于返回a中的所有行以及来自b的所有匹配行,然后从b中排除任何匹配的行。例如:

 SELECT a.id
      , a.fum
   FROM foo a
   LEFT
   JOIN bar b
     ON b.id = a.id
  WHERE b.id IS NULL