2012-04-16 3 views
3

Мой вопрос в следующем: У меня есть MySQL запрос, как это:Граф все соответствующие поля в MySQL Query

SELECT student_id, name, email 
FROM student 
WHERE student_id IN ('1', '2', '3') 
    OR name LIKE '%Nick%' 
    OR email LIKE '%gmail.com%' 

Как я могу получить количество соответствующих полей в в виде столбца, MySQL возвращает Что-то вроде этого:

ID NAME EMAIL   MATCHED 
1. 1 Nick [email protected] 3 
2. 5 Nick [email protected] 1 
3. 2 David [email protected] 2 

Спасибо !!

+0

Спасибо Серхио Туленцев за редактирование моего вопроса, теперь выглядит лучше –

+0

Нет проблем. В следующий раз сделайте это самостоятельно :) –

ответ

2

Это должно работать

SELECT student_id, name, email, 
    (
     CASE WHEN student_id IN ('1', '2', '3') THEN 1 END + 
     CASE WHEN name LIKE '%Nick%' THEN 1 END + 
     CASE WHEN email LIKE '%gmail.com%' THEN 1 END 
    ) as matched 
FROM student 
WHERE student_id IN ('1', '2', '3') 
    OR name LIKE '%Nick%' 
    OR email LIKE '%gmail.com%' 
+2

Он хочет подсчитать согласованные поля для строки, а не совпадающие строки. Я думаю. –

+0

@SergioTulentsev, см. Мое редактирование – Starx

+0

Это больше похоже на это. :) –

7

Это некрасиво, но что-то вроде

SELECT student_id, name, email, 
    IF(student_id IN (1,2,3), 1, 0) + 
    IF(name LIKE '%Nick%', 1, 0) + 
    IF(email LIKE '%gmail.com%', 1, 0) AS matched 
etc... 

должен сделать трюк.

+0

уродливое слово. Но я не могу придумать лучше, так что +1 – xQbert

+0

это не работает (( –

Смежные вопросы