Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Then(?)或点系统进行SQL查询_Sql_Search_Sorting_Sql Order By - Fatal编程技术网

使用Then(?)或点系统进行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

我正在构建一个用户搜索,我有一个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 = 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