计数在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
谢谢!
这应该工作
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-16 22:12:44
@SergioTulentsev,请参阅我的编辑 – Starx 2012-04-16 22:18:56
更喜欢它。 :) – 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...
应该做的伎俩。
丑陋的正确的话。但我不能拿出更好的+1 – xQbert 2012-04-16 22:19:37
这是行不通的(( – 2012-04-17 14:07:55
谢谢塞尔吉奥Tulentsev编辑我的问题,现在看起来更好 – 2012-04-16 22:13:35
没问题。下一次自己动手:) – 2012-04-16 22:14:16