【问题标题】:Count rows from another SQL table in the same query计算同一查询中另一个 SQL 表中的行数
【发布时间】:2021-01-27 20:19:14
【问题描述】:

我有 2 个表,只有一个查询我必须从中获取结果 我有 url 表和 vote 表。

Table url

|id           |url            |category|
|.............|...............|........|
|1            |example1.com   |1       |
|2            |example2.com   |1       |
|3            |example3.com   |2       |
|4            |example4.com   |1       |

Table vote

|id           |note        |
|.............|............|
|1            |1           |
|1            |2           |
|1            |1           |
|2            |1           |

我想做一个查询,显示 url 表的所有字段以及注释 1 的所有行的计数。

我已经尝试过这个查询:

SELECT u.id, u.url, u.cat, COUNT(*) as countnote 
FROM vote v, url u 
WHERE u.cat=1 and v.note=1

但它只显示一排。

预期结果:

|id           |url            |countnote|Category|
|.............|...............|.........|........|
|1            |example1.com   |2        |1       |
|2            |example2.com   |1        |1       |
|4            |example4.com   |0        |1       |

感谢您的帮助

【问题讨论】:

  • SELECT u.id, u.url, u.cat, COUNT(*) as countnote FROM vote v, url u WHERE u.cat=1 and v.note=1 GROUP BY u.id , u.url, u.cat
  • 它没有显示预期的结果

标签: mysql sql


【解决方案1】:

我只是建议一个相关的子查询:

SELECT u.*,
       (SELECT COUNT(*)
        FROM vote v
        WHERE v.id = u.id AND v.note = 1
       ) as num_note_1
FROM url
WHERE u.cat = 1;

【讨论】:

    【解决方案2】:
    WITH URLL (ID,URLL,CATEGORY)AS
     (
        SELECT 1,'EXAMPLE1.COM',1
          UNION ALL
        SELECT 2,'EXAMPLE2.COM',1
          UNION ALL
        SELECT 3,'EXAMPLE3.COM',2
          UNION ALL
        SELECT 4,'EXAMPLE4.COM',1
    ),
    VOTE(ID,NOTE)AS
    (
        SELECT 1,1 
         UNION ALL
        SELECT 1,2
         UNION ALL
        SELECT 1,1
          UNION ALL
        SELECT 2,1       
    )
    --the query
    SELECT UR.ID,UR.URLL,UR.CATEGORY,COALESCE(XQ.CNTT,0)CNTT
    FROM URLL AS UR
    LEFT JOIN 
     (
       SELECT COUNT(ID)CNTT,V.ID
        FROM VOTE AS V
         WHERE V.NOTE=1
         GROUP BY V.ID
     )XQ ON UR.ID=XQ.ID
    WHERE UR.CATEGORY=1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多