SQL查询按count()从不同的表中排序

时间:2018-04-05 15:17:43

标签: mysql sql

我正在使用jQuery bootstrap表执行ajax请求...使用以下查询来获取网站列表:

SELECT * 
FROM websites 
WHERE (name LIKE '%xx%' OR url LIKE '%xx%' OR country LIKE '%xx%') 
ORDER BY id desc 
LIMIT 0,10

我需要能够按照每个网站在asc或desc中的文章(包括WHERE子句)中所需的文章数量对网站进行排序。我可以使用以下查询来计算:

SELECT * 
FROM articles 
WHERE website_url='$url' 
AND DATE(date_inserted) = CURRENT_DATE 
AND is_valid='1'

SELECT * 
FROM articles 
WHERE website_url='$url' 
AND is_valid='1'

两个表都有一个可用于匹配的公共字段:在网站表中,它被称为“url”,在文章表中,它被称为“website_url”

另请注意,我需要一次获取有限数量的网站,但结果应根据表格中的所有行进行排序。

任何帮助将不胜感激。

我对如何构建所需的查询毫无头绪。

  

小提琴:https://www.db-fiddle.com/#&togetherjs=4UG71ov2Jz

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT w.*
  FROM websites w
  LEFT OUTER JOIN (SELECT website_url, COUNT(*) as num_articles
                     FROM articles
                    WHERE is_valid='1'
                    GROUP BY website_url) a
    ON a.website_url = w.url
 WHERE (w.name LIKE '%xx%' OR w.url LIKE '%xx%' OR w.country LIKE '%xx%')
 ORDER BY a.num_articles DESC
 LIMIT 0,10