我有一个包含以下列的表:
idCat, idParent, Des
idCat是自动增量的,Des是用于描述,如果记录是父级,则idParent可以是“0”,如果是子级,则它可以具有父级的“idCat”值。
我需要对没有孩子的所有记录的SELECT“Des”进行查询,如下所示:
SELECT Des FROM Table HAVING COUNT (idCat=idParent) = 0
显然这个查询不起作用。
你能帮我吗?
答案 0 :(得分:0)
这可以通过NOT IN,NOT EXISTS或LEFT JOIN来完成...... WHERE NULL - 后者通常是MySQL中表现最好的:
SELECT t1.Des FROM Table t1
LEFT JOIN Table t2 on t1.idCat = t2.idParent
WHERE t2.idParent IS NULL
答案 1 :(得分:0)
如果所有父项idParent字段为0或null,则使用此查询
SELECT Des FROM Table HAVING idParent = 0 OR idParent IS NULL
这将是有效的,但是使用大数据库会更慢;
SELECT Des FROM Table HAVING idParent NOT IN ( SELECT idCat FROM Table )