我正在嘗試爲此問題編寫查詢:在mysql中組合兩個查詢時出錯
編寫一個查詢以僅選擇所有作者都屬於印度國籍的書籍。
其中
我嘗試使用內連接來合併這兩個查詢,但它給一個錯誤..
我的查詢是..
SELECT COUNT(*)
FROM (books_authors
WHERE books_authors.author_id IN
(
SELECT author_id
FROM obl_authors WHERE nationality='Indian'
) GROUP BY books_authors.book_id) A
INNER JOIN
(
SELECT COUNT(*)
FROM books_authors
GROUP BY books_authors.book_id
) B
ON A=B
它給這個錯誤:
Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where books_authors.author_id in (select author_id from obl_authors where nation' at line 1
我有3個表obl_books,obl_authors和books_authors(鏈接表)..什麼ia m試圖在這裏做的是在第一個查詢中,我正在檢索author_id的行數,其中國籍是從obl_author表中爲每個book_id的印度
在第二個查詢iam中檢索特定book_id的所有作者的行計數。
我想結合這兩個查詢來檢查book_id的author_id的行數等於它的總行數(即iam從第二個查詢中獲取)。如果它然後檢索book_id。
在我做A = B,以檢查它的平等,但如何將我告訴它甚至檢索這些book_ids是否匹配(即A = B)
其不工作..我想檢查這兩個查詢的計數是否相等,而不是他們的book_id – xyz
如果你的選擇單獨工作,那麼這個查詢也應該工作。至於你的要求...我更新了我的答案。不過,由於您沒有使用您分組的列,因此到目前爲止,分組沒有任何邏輯......分組可能會返回多於一行,因此您無法通過減去計數來檢查它們是否相等。或者你在密鑰上分組,然後在每對內進行比較,或者根本不分組:) :) –
謝謝......我明白了我的錯誤:) – xyz