检查另一个列中元素的成员资格,mySQL

时间:2011-11-16 17:23:57

标签: mysql

我如何计算出现在第1列而不是第2列的值。它们来自同一个表,不使用子查询或任何花哨的东西。它们可能会或可能不会共享其他常见列值(例如col 3 = col 4)但这并不重要。

我几乎使用子查询,但无法知道如何在没有子查询的情况下执行此操作。唯一的问题(我认为)如果主键(由col1,col3,col4组成)不同但col1相同,它会计算两次。

SELECT DISTINCT COUNT(*)
FROM mytable t1
WHERE NOT EXISTS (
  SELECT DISTINCT *
  FROM mytable
  WHERE t1.column1 = mytable.column2
);

但就像我说的那样,我试图在没有子查询的情况下计算这个

2 个答案:

答案 0 :(得分:0)

请看这个:

SELECT
    SUM(IF(column1 = column2, 0, 1)) as c
FROM
    mytable

答案 1 :(得分:0)

怎么样:

SELECT COUNT(*)
FROM mytable mt1
  LEFT JOIN mytable mt2 ON mt1.column1 = mt2.column2
WHERE mt2.column IS NULL