2014-12-22 2 views
1

В моей таблице базы данных у меня есть 6 столбцов id (auto), title, news, image, type Я пишу этот запрос.Я хочу получить запись с запятой в базе данных mysql

select id,title,image 
from add_news 
where FIND_IN_SET('Travel','Music',type) 
ORDER BY id DESC 

Я получаю эту ошибку

Incorrect parameter count in the call to native function 'FIND_IN_SET' 
+0

ошибка довольно ясно. И даже самый быстрый поиск в Google приводит вас к документации для этой функции: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set – David

+0

1. См. Нормализацию – Strawberry

ответ

3

Я предполагаю, что type - это список с разделителями-запятыми. Это очень плохой формат данных, и у вас должна быть отдельная таблица с одной строкой для каждого типа и статьи.

Но, учитывая формат, правильный синтаксис:

select id, title, image 
from add_news 
where find_in_set('Travel', type) > 0 or 
     find_in_set('Music', type) > 0 
order by id desc; 
1

Использование В оператор вместо FIND_IN_SET()

Попробуйте это:

SELECT A.id, A.title, A.image 
FROM add_news A 
WHERE A.type IN ('Travel', 'Music') 
ORDER BY A.id DESC