MySql过滤器组查询

时间:2017-10-11 08:31:48

标签: mysql sql

我有一个组查询,它给出了LEFT JOIN表上可用记录的总数。这工作正常,但我现在尝试添加一个过滤条件,只显示一个精确的记录,我这样做的方式不起作用。有谁看到我做错了什么?非常感谢。以下是我的代码。

table1
--------

    t1.abc_uniqueid
    t1.abc_serial
    t1.abc_gender
    t1.abc_fullname
    t1.abc_phone
    t1.abc_bcu_uniqueid

2记录样本数据:

    1
    12344
    'male'
    'john doe'
    '888888888'
    7777

    2
    12345
    'female'
    'jane doe'
    '888888889'
    7777


table2
-------

    lyy_uniqueid
    lyy_abc_uniqueid
    ...

2记录样本数据:

    10
    1
    ...

    11
    2
    ...

我的GROUP查询有效:

SELECT
    t1.abc_uniqueid,
    t1.abc_serial As serial,
    t1.abc_gender As gender,
    t1.abc_fullname As fullname,
    t1.abc_phone As phone,
    IFNULL(v.TotalNo, 0) TotalNo   
    FROM 
    table1 t1   LEFT JOIN   ( 
    SELECT lyy_abc_uniqueid, COUNT(*) TotalNo
    FROM table2 v
    GROUP BY lyy_abc_uniqueid   ) v 
    ON v.lyy_abc_uniqueid = t1.abc_uniqueid   
    AND t1.abc_bcu_uniqueid=7777;

我想添加一个像这样的新条件:

    AND t1.abc_serial=12345;

如果我使用AND t1.abc_bcu_uniqueid = 7777,我能够得到正确的结果,但是一旦我添加新条件,结果都是错误的。例如,如果table1有一个t1.abc_serial = 1的行,我想让该组仅为此保持连接。

2 个答案:

答案 0 :(得分:1)

希望这是你想要的:

SELECT
    t1.abc_uniqueid,
    t1.abc_serial As serial,
    t1.abc_gender As gender,
    t1.abc_fullname As fullname,
    t1.abc_phone As phone,
    IFNULL(v.TotalNo, 0) TotalNo   
    FROM 
    table1 t1   LEFT JOIN   ( 
    SELECT lyy_abc_uniqueid, COUNT(*) TotalNo
    FROM table2 v
    GROUP BY lyy_abc_uniqueid   ) v 
    ON (v.lyy_abc_uniqueid = t1.abc_uniqueid)   
    where t1.abc_bcu_uniqueid=7777 and t1.abc_serial=12345;

答案 1 :(得分:0)

可能是因为你必须将字段abc_serial添加到GROUP BY