我有一个组查询,它给出了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的行,我想让该组仅为此保持连接。
答案 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