首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有条件偏好的mysql选择

带有条件偏好的mysql选择
EN

Stack Overflow用户
提问于 2013-10-12 15:19:40
回答 2查看 899关注 0票数 1

我有一个包含4个字段的数据库,我想通过多个或多个条件从该数据库中搜索用户,问题是如何根据真或条件的数量对所选内容进行索引。字段是课程,学校,学院,城市,我想要的结果应该按照真实的数量或条件显示,这里是代码。

代码语言:javascript
复制
    <?php
    $con = mysql_connect("xxx.xx.xxx.xxx","myusername","mypassword");
    if (!$con)
      {
     die('Could not connect: ' . mysql_error());
      }
    mysql_select_db("character", $con);
    $searchfrnd = mysql_query("SELECT * FROM user WHERE (course='physics' or  school='st thomas' or college='mit' or city='austin'))");
    WHILE($display = mysql_fetch_array($searchfrnd))
    {
    $frnd=$display[userid];
    echo $frnd;
    }
    ?>
  • 我只想要显示的结果的优先级应该是按真或conditions.In数的递减顺序,换句话说,按匹配值数目的降序排列。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-12 15:25:33

请尝试以下查询:

代码语言:javascript
复制
SELECT *
FROM user 
WHERE surname='jack' 
  OR  school='st' 
  OR college='austin' 
  OR city='mit'
ORDER BY (
  IF(surname='jack', 1, 0)
  + IF(school='st', 1, 0)
  + IF(college='austin' , 1, 0)
  + IF(city='mit', 1, 0)
) DESC;
票数 2
EN

Stack Overflow用户

发布于 2013-10-12 15:26:06

你可以做这样的事

代码语言:javascript
复制
select (case when surname = 'jack' then 1 else 0 end +
        case when school ='st' then 1 else 0 end +
        case when college='mit' then 1 else 0 end +
        case when city='austin' then 1 else 0 end) as score,
        *
from 
user 
WHERE surname='jack' or  
      school='st'     or 
      college='mit' or 
      city='austin')
order by score desc;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19335787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档