2015-10-13 88 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为作者书关系保留一个单独的表总是更好的。 –

相关问题