3

私の質問は次です:私はこのような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  

ありがとうございました!!

4

2 に答える 2

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

トリックを行う必要があります。

于 2012-04-16T22:16:34.903 に答える
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%'
于 2012-04-16T22:12:10.307 に答える