计数在MySQL查询所有匹配的领域

问题描述:

我的问题是下一:我有一个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

这应该工作

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

这是丑陋的,但类似

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