2015-10-13 45 views
0

我有一個MySQL查詢的問題。在乾草堆中的MySQL搜索鍵

我有一個書籍的數據庫,其中有一個名爲「authors」的字段;該字段包含本書作者的ID。例如。 16,42,100。

在作者的單頁中,我想擁有作者的所有書籍。

那麼...什麼是正確的查詢?

SELECT * FROM xxxx WHERE authors ???? '$author' 

我試圖與LIKE「$作者%」,但這種方法有一個缺陷:逸岸,如果$筆者= 116,查詢將返回我也是本書簡介= 1116。

在此先感謝!

莫羅

+2

切勿將多個值存儲在一列中。重新設計你的數據庫,閱讀有關規範化。 – fancyPants

回答

0

您需要FIND_IN_SET:

SELECT * FROM xxxx WHERE find_in_set(author_id, authors) > 0 

你真的應該歸該數據庫。

+0

它像一個魅力,謝謝:) – Mauro

1

你需要這樣的:

SELECT * FROM `books` WHERE `author_id` = '2'; -- Single author. 

-- Multiple authors. 
SELECT * FROM `books` WHERE `author_id` IN (
    SELECT `author_id` FROM (whatever) 
) 
+1

Quote:「我嘗試了LIKE'$ author%',但是這個解決方案有一個錯誤:事實上,如果$ author = 116,查詢會返回給我的還有author = 1116的書。 – CFreitas

+0

是的,@CFreitas爲作者書關係保留一個單獨的表總是更好的。 –

相關問題