mysql - 将 () 算作某物

标签 mysql join count left-join inner-join

我有下表: 类别:

cat_id | cat_cat | cat_name
     1 |       0 | name1
     2 |       0 | name2
     3 |       1 | name3
     4 |       2 | name4
     5 |       2 | name5
     6 |       0 | name6
     7 |       1 | name7

我尝试选择 cat_cat=0 的所有类别,并选择以 cat_cat 作为当前 cat_id 的每个记录的计数,基本上给出了以下结果:

cat_id | cat_cat | cat_name | cat_subcats
     1 |       0 | name1    |           2
     2 |       0 | name2    |           2
     6 |       0 | name7    |           0

我尝试了多个查询,当前的查询如下:

SELECT i.* , COUNT( i2.icon_id ) AS subcats
FROM themes_icons i, themes_icons i2
WHERE i.icon_cat =  '0'
    AND i2.icon_cat = i.icon_id
GROUP BY i.icon_cat, i2.icon_id
ORDER BY i.icon_order ASC

这个查询似乎给了我以下结果:

cat_id | cat_cat | cat_name | cat_subcats
     1 |       0 | name1    |           1
     1 |       0 | name1    |           1
     2 |       0 | name2    |           1
     2 |       0 | name2    |           1
     6 |       0 | name7    |           0

任何人都知道我如何才能得到想要的结果。我也尝试过 join 语句,但它们总是给我返回错误。

提前致谢。

最佳答案

SELECT c1.cat_id, c1.cat_cat, c1.cat_name,
(
  SELECT COUNT(*)
  FROM categories c2
  WHERE c2.cat_cat=c1.cat_id
) AS cat_subcats
FROM categories c1
WHERE c1.cat_cat=0

它是一个标准的SELECT,除了计算当前类别的子类别的子选择之外。

关于mysql - 将 () 算作某物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6718469/

相关文章:

php - 如何使用 PHP 打破 MySQL 查询的束缚?

mysql - 如何忽略条件结果并在sql server中选择保留结果

mysql - 如何将表1的每条记录与表2的几条记录连接起来?

scala - Spark Scala 总结数据集的列元素?

mysql - 使用 Case 语句计算 MYSQL 中子字符串出现的次数

mysql - 如何在行之间使用 AND 运算符进行查询

MySQL在命令行中向后和向前搜索历史记录

sql - 如何在正则表达式上连接表

php - 连接从数据库返回的相等值

mysql - 按月和年分组,从另一个表中计数