基于AS结果的MYSQL过滤查询结果

时间:2018-06-15 06:17:05

标签: mysql json

所以我在这里有这个mysql查询:

SELECT
     t1.*,
    (SELECT count(*) FROM tb_pt t2
     WHERE t2.id_provinsi = t1.id_provinsi && nama_pt LIKE '%$nama%' && status_pt = 1 ) As jumlah
FROM tb_provinsi t1
WHERE status_provinsi = 0

查询将返回此结果

enter image description here

问题是你可以看到查询返回所有结果,无论jumlah是否为0,我想根据' WHERE jumlah!= 0'来过滤这些结果。这样查询只返回jumlah大于0的1个结果(id_provinsi = Prv02)

有关如何实现这一目标的任何想法或想法? 三江源

1 个答案:

答案 0 :(得分:0)

问题的根本原因是SELECT子句中的别名在后者执行时WHERE子句中尚不可用。一种方法是在WHERE子句中重复别名逻辑。但是,MySQL提供了一个重载的HAVING运算符,可以引用别名:

SELECT
     t1.*,
    (SELECT count(*) FROM tb_pt t2
     WHERE t2.id_provinsi = t1.id_provinsi AND
           nama_pt LIKE '%$nama%' AND
           status_pt = 1) AS jumlah
FROM tb_provinsi t1
WHERE status_provinsi = 0
HAVING jumlah > 0;