Sql Oracle选择评论最多的新闻
我有两个表格:Sql Oracle选择评论最多的新闻,sql,oracle,select,Sql,Oracle,Select,我有两个表格:新闻和评论 新闻表格: CREATE TABLE "NEWS" ( "NEWS_ID" NUMBER(20, 0), "SHORT_TEXT" VARCHAR2(100 BYTE), "FULL_TEXT" VARCHAR2(2000 BYTE), "TITLE" VARCHAR2(30 BYTE), "CREATION_DATE" TIMESTAMP(6), "MODIFIC
新闻
和评论
新闻
表格:
CREATE TABLE "NEWS"
(
"NEWS_ID" NUMBER(20, 0),
"SHORT_TEXT" VARCHAR2(100 BYTE),
"FULL_TEXT" VARCHAR2(2000 BYTE),
"TITLE" VARCHAR2(30 BYTE),
"CREATION_DATE" TIMESTAMP(6),
"MODIFICATION_DATE" DATE
)
CREATE TABLE "COMMENTS"
(
"COMMENT_ID" NUMBER(20, 0),
"COMMENT_TEXT" VARCHAR2(100 BYTE),
"CREATION_DATE" TIMESTAMP(6),
"NEWS_ID" NUMBER(20, 0)
)
注释
表格:
CREATE TABLE "NEWS"
(
"NEWS_ID" NUMBER(20, 0),
"SHORT_TEXT" VARCHAR2(100 BYTE),
"FULL_TEXT" VARCHAR2(2000 BYTE),
"TITLE" VARCHAR2(30 BYTE),
"CREATION_DATE" TIMESTAMP(6),
"MODIFICATION_DATE" DATE
)
CREATE TABLE "COMMENTS"
(
"COMMENT_ID" NUMBER(20, 0),
"COMMENT_TEXT" VARCHAR2(100 BYTE),
"CREATION_DATE" TIMESTAMP(6),
"NEWS_ID" NUMBER(20, 0)
)
有没有办法选择所有按评论数量排序的新闻 您可以使用评论数量的聚合查询来连接新闻表:
SELECT news.*, NVL(num_comments, 0) AS num_comments
FROM news
LEFT JOIN (SELECT news_id, COUNT(*) AS num_comments
FROM comments
GROUP BY news_id) cmt on cmt.news_id = news.news_id
ORDER BY num_comments DESC
第3行有一个额外的闭合支架。但是谢谢你的快速回复。