0

たとえば、テーブルがbooksあり、特定の名前ですべての本を検索したい場合は、それらの本の著者を取得して、booksテーブル内のすべてのエントリについてテーブルを調べます。たとえば、「All About Pirates」というタイトルを検索し、そのタイトルが「Jane Doe」と「JoeSmith」の2冊の本がある場合、それらの著者によるすべてのタイトルがテーブルで再度検索されます。

select *
from books b
join books b2 on b.author = b2.author
where title = 'All About Pirates'
4

3 に答える 3

3

次のようなサブクエリを使用します。SELECT*FROMBooks WHERE author IN(SELECT author FROM books WHERE title ='All About Pirates');

于 2012-09-23T22:52:10.557 に答える
2

あなたの質問はほぼ正しいです。where句でタイトルのエイリアスを指定する必要があります。

select b2.*
from books b join
     books b2
     on b.author = b2.author
where b.title = 'All About Pirates' 

タイトルがあいまいだったため、元のクエリは解析できませんでした。このクエリb2には、著者が一致する本のリストがあります。

于 2012-09-24T02:51:54.033 に答える
1

選択の結果にテーブルを結合できます。

たとえば、次のように本に一致する著者を取得します。

SELECT author FROM books WHERE title="All About Pirates" GROUP BY author;

したがって、本のテーブルを次のように著者のこのテーブルに結合できます。

SELECT books.*
FROM books
JOIN (SELECT author FROM books WHERE title="All About Pirates" GROUP BY author) AS r
ON books.author=r.author;
于 2012-09-23T22:49:39.323 に答える