0

我有一个包含以下列的表格:

idCat, idParent, Des

idCat 是自动递增的,Des 用于描述,如果记录是父项,则 idParent 可以为“0”,如果是子项,则它可以具有父项的“idCat”值。

我需要查询所有没有孩子的记录的 SELECT "Des",如下所示:

SELECT Des FROM Table HAVING COUNT (idCat=idParent) = 0

显然这个查询不起作用。

你能帮我吗?

4

2 回答 2

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
于 2013-05-18T13:48:35.000 回答
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 )
于 2013-05-18T13:49:48.273 回答