2012-04-16 35 views
3

我的問題是下一:我有一個MySQL查詢像這樣:計數在MySQL查詢所有匹配的領域

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

謝謝塞爾吉奧Tulentsev編輯我的問題,現在看起來更好 – 2012-04-16 22:13:35

+0

沒問題。下一次自己動手:) – 2012-04-16 22:14:16

回答

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

他想爲一行計算匹配的字段,而不是匹配的總行數。我認爲。 – 2012-04-16 22:12:44

+0

@SergioTulentsev,請參閱我的編輯 – Starx 2012-04-16 22:18:56

+0

更喜歡它。 :) – 2012-04-16 22:20:11

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 2012-04-16 22:19:37

+0

這是行不通的(( – 2012-04-17 14:07:55