使用Then(?)或点系统进行SQL查询
我正在构建一个用户搜索,我有一个id为first和last的Users表 然后我问一个名字,说:“约翰·史密斯” 使用PHP,我将查询分为两部分:q1=John和q2=Smith 我想设计一个积分系统,在这个系统中,first=John和last=Smith的记录会被拉到顶部 我的sql是这样的:使用Then(?)或点系统进行SQL查询,sql,search,sorting,sql-order-by,Sql,Search,Sorting,Sql Order By,我正在构建一个用户搜索,我有一个id为first和last的Users表 然后我问一个名字,说:“约翰·史密斯” 使用PHP,我将查询分为两部分:q1=John和q2=Smith 我想设计一个积分系统,在这个系统中,first=John和last=Smith的记录会被拉到顶部 我的sql是这样的: SELECT User.id, User.first, User.last FROM users as User WHERE (User.first = q1 OR User.first = q
SELECT User.id, User.first, User.last
FROM users as User
WHERE (User.first = q1 OR User.first = q2) OR //if this is true +1 points
WHERE (User.last = q1 OR User.last = q2) OR //if this is true +1 points
//then sum up the points and order by it (so the User.id with John Smith will have 2 points)
有什么建议吗?如果您的DBMS具有If功能,您可以执行以下操作:
SELECT User.id, User.first, User.last,
IF (User.first = q1 OR User.first = q2, 1, 0) +
IF (User.last = q1 OR User.last = q2, 1, 0) as points
FROM users as User
ORDER BY points DESC
sum(如果……那么1或0结束)
也应该做这个工作!谢谢你的帮助,这会起作用的,但是我如何阻止那些0分的人出现在结果集中呢?这就是我的想法,但奇怪的是我得到了这个:where子句中的未知列“points”哦,对不起,在这种情况下,你必须使用HAVING points>0
。