【问题标题】:SQL Query with Join, Count and Where带有联接、计数和位置的 SQL 查询
【发布时间】:2013-07-19 01:15:12
【问题描述】:

我有 2 个表,我正在尝试做一个查询来节省一些工作。

Table 1: id, category id, colour
Table 2: category id, category name

我想加入他们,以便获得id, category id, category name, colour

然后我想限制它,以便不选择“红色”项目(WHERE colour != "red") 然后我要统计每个类别的记录数(COUNT(id) GROUP BY (category id)。

我一直在尝试:

SELECT COUNT(table1.id), table1.category_id, table2.category_name 
FROM table1 
INNER JOIN table2 ON table1.category_id=table2.category_id 
WHERE table1.colour != "red"

但这只是行不通。我尝试了很多变体,但在尝试上述查询时却没有得到任何结果。

【问题讨论】:

    标签: sql join count where


    【解决方案1】:

    我用过子查询,效果很好!

    SELECT *,(SELECT count(*) FROM $this->tbl_news WHERE
    $this->tbl_news.cat_id=$this->tbl_categories.cat_id) as total_news FROM
    $this->tbl_categories
    

    【讨论】:

      【解决方案2】:
      SELECT COUNT(*), table1.category_id, table2.category_name 
      FROM table1 
      INNER JOIN table2 ON table1.category_id=table2.category_id 
      WHERE table1.colour <> 'red'
      GROUP BY table1.category_id, table2.category_name 
      

      【讨论】:

        【解决方案3】:

        您必须使用GROUP BY,这样您将返回多条记录,

        SELECT  COUNT(*) TotalCount, 
                b.category_id, 
                b.category_name 
        FROM    table1 a
                INNER JOIN table2 b
                    ON a.category_id = b.category_id 
        WHERE   a.colour <> 'red'
        GROUP   BY b.category_id, b.category_name
        

        【讨论】:

          猜你喜欢
          • 2021-12-28
          • 2018-11-14
          • 1970-01-01
          • 2017-01-25
          • 1970-01-01
          • 1970-01-01
          • 2014-02-27
          • 1970-01-01
          • 2022-01-20
          相关资源
          最近更新 更多