繁体   English   中英

MySQL使用WHERE语句跨表选择COUNT()?

[英]MySQL select COUNT() accross tables using WHERE statement?

到目前为止,我已经将其与子选择一起使用,但是一些研究告诉我,使用子选择(尤其是在大型表上)是很不好的,因为它们的性能较差。

现在,这就是我得到的:

SELECT COUNT( riddims.riddim ) AS rc, 
(
    SELECT COUNT( tunes.tune )
    FROM tunes
    WHERE tunes.tune NOT
    IN (
        ''
    )
) AS tc
FROM riddims
WHERE riddims.riddim NOT
IN (
    ''
)

这些表如下所示:

riddims:
riddim | genre | image

tunes:
riddim | artist | tune

我当时在玩“ JOIN”,但无法确定一个有效的查询。 我需要的是比上述解决方案更有效的方式, 类似于多张表中的堆栈溢出计数

我的目标是执行显示以下输出的查询:

riddims | tunes | artist
100     | 400   | 2
  • riddims不在的地方('')
  • 调到NOT IN('')的位置
  • 艺术家=“某位艺术家”

这是我的开始方式,但是显然它走错了方向:

SELECT COUNT(riddims.riddim) AS rc, COUNT(tunes.tune) AS tc FROM riddims LEFT JOIN tunes ON riddims.riddim = tunes.riddim

您是否要这样做:

select riddims, tunes, artists
from (select count(*) as riddims from riddims where . . . ) r cross join
     (select count(*) as tunes from tunes where tunes not in  . . .) t cross join
     (select count(*) as artists from tunes where artist not in . . .) a

您的表似乎没有连接,至少对于此查询而言。 可能的性能问题是您选择的子查询每行被调用一次。 通过将它们放在FROM子句中,可以消除此可能的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM