我试图通过SQL进行查询。
我正在使用使用SQLite的游乐场。
有两个表格:books_north
和books_south
两者都有以下列:id
,title
,author
,genre
和first_published
我尝试的查询是生成一份报告,列出两个地点的图书标题,并统计具有相同标题的图书总数。
我无法弄清楚如何开始计算。
到目前为止我已经
了SELECT title
FROM books_north
INNER JOIN books_south
ON books_north.title = books_south.title;
但它只是说title
是一个含糊不清的专栏。
我该怎么做?谢谢
答案 0 :(得分:2)
您需要UNION ALL
才能获得每个count
title
Select Title,Count(1) as [Count]
From
(
SELECT title FROM books_north bn
union all
select title from books_south bs
) A
Group by Title
使用FULL OUTER JOIN
的另一种方法(如果您的RDBMS
支持)
SELECT COALESCE(bn.Title, bs.title) as title,
( bn.[count] + bs.[count] ) AS [Count]
FROM (SELECT title,
Count(1) AS [count]
FROM books_north
GROUP BY title) bn
FULL OUTER JOIN (SELECT title,
Count(1) AS [count]
FROM books_south
GROUP BY title) bs
ON bn.Title = bs.Title
关于您的错误消息,标题列出现在表中,因此当您select
Title
列时,您需要告诉编译器您要从哪个表中选择Title
柱。可以通过为Join
答案 1 :(得分:1)
SELECT COUNT( DISTINCT a.title) AS TITLECount
FROM books_north a
INNER JOIN books_south b
ON a.title = b.title;
简单的内部联接就足以让你计算。使用SELECT
中的表别名来消除列title
中的歧义,因为它存在于两个表中。
答案 2 :(得分:1)
关于您提到的错误:
问题是SELECT title
- 它要求您具体说明title
应该从哪里读取,books_north
或books_south
。
因此,您需要告诉SELECT book_north.title
或SELECT book_south.title
关于歧义错误的所有内容。
计数在其他答案中解释。如果您想要显示group by
和title
(在您的案例中基本上是count
,则需要了解group by title
。
SELECT books_north.title, count(books_north.title)
FROM books_north
INNER JOIN books_south
ON books_north.title = books_south.title
GROUP BY books_north.title;
答案 3 :(得分:0)
这有效:
SELECT title, COUNT(title) count FROM
(
SELECT title FROM books_north
UNION ALL
SELECT title FROM books_south
)
GROUP BY title;