我有一个表,其中有一个名为Skills的列,其中包含不同员工的逗号分隔值,例如
EmpID Skills
1 C,C++,Oracle
2 Java,JavaScript,PHP
3 C,C++,Oracle
4 JavaScript,C++,ASP
5 C,C++,JavaScript因此,我想写一个查询,它将首先对所有熟悉JavaScript的员工进行排序,如何才能得到这个结果?
发布于 2013-08-13 06:45:45
尝尝这个
SELECT *
FROM
(
SELECT *
,CASE WHEN Skills LIKE '%JavaScript%' THEN 0 ELSE 1 END AS Rnk
FROM MyTable
) T
ORDER BY rnk,EmpID或
SELECT * FROM #MyTable
ORDER BY CASE WHEN Skills LIKE '%JavaScript%' THEN 0 ELSE 1 END,EmpID发布于 2013-08-13 06:44:59
您应该使用而不是使用一个属性来存储多个值。这违反了关系DB原则。
相反,您应该创建额外的表来存储技能,并在其中引用员工。然后,您的查询将类似于:
SELECT
*
FROM
employees
LEFT JOIN employees_skills
ON employee.id=employees_skills.employee_id
WHERE
employees_skills='JavaScript'发布于 2013-08-13 06:45:10
select EmpID, Skills
from Table1
order by case when Skills like '%JavaScript%' then 0 else 1 endhttps://stackoverflow.com/questions/18202277
复制相似问题