Mysql 根据条件查询 select 不同的记录?

Mysql query to select Distinct Records on conditions?

我有 table 这样的结构.. ext_no , value ..我想 select 条件不同的记录..就像 [= 计数时15=] 是 多于两个 当且仅当 所有 ext_no value 为零.. 我想要下面给出的预期结果......比如..如何写mysql查询这个......?任何帮助将不胜感激..提前致谢..

Table 结构:

CREATE TABLE `test` (
  `ext_no` int(5) default NULL,
  `value` int(3) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `test`
--

INSERT INTO `test` (`ext_no`, `value`) VALUES
(12133, 0),
(12133, 0),
(12133, 0),
(22222, 0),
(44226, 0),
(44226, 0),
(44226, 1),
(44226, 2),
(99902, 1),
(99902, 2),
(99902, 3),
(11505, 0),
(11505, 0),
(11505, 0),
(11505, 0);

预期结果:

ext_no  value
12133     0
11505     0

编辑:我试过了-

select distinct ext_no, value from test where value ='0' order by ext_no DESC;

你可以试试这个,使用 group byhaving 子句:

SELECT
    ext_no,
    SUM(value) as value
FROM
    test
GROUP BY
    ext_no
HAVING
    count(*) > 2 AND SUM(value) = 0

count 跳过 null 值。所以你可以 count 一个值为 0case 表达式,然后使用 having 条件来检查这个计数是否等于总计数:

SELECT   ext_no, MAX(value)
FROM     test
GROUP BY ext_no
HAVING   COUNT(*) > 2 AND 
         COUNT(*) = COUNT(CASE value WHEN 0 THEN 1 END)

试试这个

SELECT t.ext_no, COUNT(*)
FROM test t
WHERE NOT EXISTS (
    SELECT 1
    FROM test
    WHERE ext_no = t.ext_no AND ext_no > 0
)
GROUP BY t.ext_no
HAVING COUNT(*) > 2