我想显示前15个使用的标题,以及相应数量的文章。在这一点上,它正在发挥作用。但是,现在我想添加另一个'OR语句',这是查询继续加载的地方(直到我手动终止它)。
工作查询:
SELECT
title,
title as t,
(SELECT count(id) FROM articles WHERE title = t) as nr
FROM
articles
GROUP BY
title
ORDER BY
nr DESC
LIMIT
15
查询失败:
SELECT
title,
title as t,
(SELECT count(id) FROM articles WHERE title = t OR title = 'Example title') as nr
FROM
articles
GROUP BY
title
ORDER BY
nr DESC
LIMIT
15
有人知道为什么这个查询失败了吗?
答案 0 :(得分:0)
试试这个
SELECT
title,
title as jt,
(SELECT count(id) FROM articles WHERE (title = t OR title = 'Example title')) as nr
FROM
articles
GROUP BY
title
ORDER BY
nr DESC
LIMIT
15
答案 1 :(得分:0)
我认为自我加入比你每次为每一行执行的柱状(select count())调用做得更好。
SELECT
A1.title,
count( A2.ID ) as NR
FROM
articles A1
JOIN articles A2
on A1.title = A2.title
GROUP BY
A1.title
ORDER BY
NR DESC
LIMIT
15
现在,要实现“OR”条件。我认为杀死你所拥有的东西的是“OR”应用于所有游戏,因此你可以为每个条目计算它,并获得与它自己的标题匹配相同的PLUS。
我认为你真正的意思是你想要这个作为过滤器(WHERE标准)。您想要所有类似“示例标题”的文章,并且从这些文章中有多少文章与其“标题”内容相关联。如果是这种情况,只需添加到上面的查询...
WHERE
A1.title = 'Example title'
示例...您的文章表格标题为
Example SQL
Example Query MySQL
Example Query SQL-Server
Example I dont care
Example Query Oracle
Example Query Oracle 11
Example Query SQL-Server 2008
因此,如果您正在寻找像“示例查询”这样的标题,那么您将获得MySQL,SQL-Server,Oracle,Oracle 11,SQL-Server 2008的条目,并完全忽略SQL和'I dont关心'。这对你想要得到的背景有意义吗?