所以我在这里有这个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
查询将返回此结果
问题是你可以看到查询返回所有结果,无论jumlah是否为0,我想根据' WHERE jumlah!= 0'来过滤这些结果。这样查询只返回jumlah大于0的1个结果(id_provinsi = Prv02)
有关如何实现这一目标的任何想法或想法? 三江源
答案 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;