统计mysql查询中所有匹配的字段

统计mysql查询中所有匹配的字段,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.

我接下来的问题是:我有一个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  nick@gmail.com  3  
2. 5  Nick  nick@yahoo.com  1  
3. 2  David david@gmail.com 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%'

它很难看,但有点像

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...

应该这样做。

他想计算一行的匹配字段,而不是总匹配行数。我想。对不起,这不是我真正需要的。编辑过的代码也不起作用-匹配列的所有值都为空rows@levgenii,你能在sqlfiddle.com上发布你的数据库模式吗?谢谢,我决定从mysql获得结果,然后将php中的数据修改为所需的外观。谢谢Sergio Tulentsev编辑我的问题,现在看起来好多了没问题。下次你自己动手:)丑陋是正确的词。但我想不出更好的so+1