如何解决SORT BY CASE IF 语句
这是我尝试过的。当应该有很多结果时,我得到零结果。任何帮助将不胜感激!
这是订购代码:
ORDER BY category ASC,CASE WHEN Business_Zip IN 'Certified_Zips' THEN Search_Order WHEN Business_Zip NOT IN
'Certified_Zips' THEN Search_Order_2 END ASC,Referrals DESC,Business_Name,Login,id ASC";
这是整个查询:
"SELECT * FROM DATA" WHERE Zip_Radius LIKE '%$zipradius%' AND category NOT
LIKE '$category' AND category NOT LIKE '$category2' AND category NOT LIKE
'$category3'
AND category2 NOT LIKE '$category' AND category2 NOT LIKE ('$category2' AND
category2 != '') AND category2 NOT LIKE ('$category3' AND category3 != '')
AND category3 NOT LIKE '$category' AND category3 NOT LIKE ('$category2' AND
category2 != '') AND category3 NOT LIKE ('$category3' AND category3 != '')
ORDER BY category ASC,CASE WHEN Business_Zip IN 'Cerified_Zips' THEN Search_Order ELSE Business_Zip
NOT IN 'Certified_Zips'
THEN Search_Order_2 END ASC,id ASC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "stuff....";
}
} else {
echo "no results";
}}
$conn->close();
解决方法
您的“按代码订购”与“整个查询”代码不匹配。你有第二个“WHEN”还是“ELSE”?如果你有一个 ELSE,我认为它后面不能跟一个“NOT IN”/“THEN”。如果您有第二个 WHEN,我建议将其替换为“ELSE Search_Order_2 END”。
编辑:结合@Akina 的评论,我同意 Order By 不能影响返回的行数。因此,您的代码中可能有错误。建议用 ELSE 代替第二个 WHEN。
EDIT2:看到更多代码,我会尝试按以下方式修改它:
"SELECT * FROM DATA WHERE Zip_Radius LIKE '%$zipradius%' AND category NOT
LIKE '$category' AND category NOT LIKE '$category2' AND category NOT LIKE
'$category3'
AND category2 NOT LIKE '$category' AND category2 NOT LIKE '$category2' AND
category2 != '' AND category2 NOT LIKE '$category3' AND category3 != ''
AND category3 NOT LIKE '$category' AND category3 NOT LIKE '$category2' AND
category2 != '' AND category3 NOT LIKE '$category3' AND category3 != ''
ORDER BY category ASC,CASE WHEN Business_Zip IN 'Cerified_Zips' THEN Search_Order ELSE Search_Order_2 END ASC,Referrals DESC,Business_Name,Login,id ASC";
,
首先感谢大家的帮助!非常感谢。
这结束了对我和我的情况的工作。希望以后能帮到其他人:
SELECT * FROM DATA WHERE Zip_Radius LIKE '%$zipradius%' AND category NOT LIKE '$category' AND category NOT LIKE '$category2' AND category NOT LIKE '$category3'
AND category2 NOT LIKE '$category' AND category2 NOT LIKE ('$category2' AND category2 != '') AND category2 NOT LIKE ('$category3' AND category3 != '')
AND category3 NOT LIKE '$category' AND category3 NOT LIKE ('$category2' AND category2 != '') AND category3 NOT LIKE ('$category3' AND category3 != '')
ORDER BY category ASC,CASE WHEN Business_Zip LIKE '$Seal_Zips' THEN Search_Order ELSE Search_Order_2 END
ASC,id ASC
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。