【问题标题】:Search then sort value搜索然后排序值
【发布时间】:2020-10-21 10:17:00
【问题描述】:

我尝试使用条件搜索值,然后对所有可用值进行排序。但是当我排序时,所有值都被重置。 这是我选择的 mysql SELECT * FROM tbProduct WHERE name = '%ASUS%' .价值回报是 1 - Asus TUF, 5 - Asus zep, 7 - Asus 然后我点击排序 mysql返回 SELECT * FROM tbProduct ORDER BY id DESC.但不是:SELECT * FROM tbProduct WHERE name = '%ASUS%' ORDER BY id DESC 和价值回报是 9 - Asus TUF, 8 - Linux, 7 - Asus, 6 - MSI, 5 - Asus zep, 4 - MacBook, 3 - DELL, 2 - ACER, 1 - Asus 有什么方法可以对搜索结果进行排序?如果您有想法,请告诉我。谢谢

【问题讨论】:

    标签: php mysql sorting search


    【解决方案1】:

    从您的问题看来,您在获取结果后单击了排序。这会运行另一个查询,而前一个查询会丢失。

    要获得所需的结果,您必须在第一个查询本身中使用 Sort 语句。

    这意味着你必须跑。

    SELECT * FROM tbProduct WHERE name = '%ASUS%' ORDER BY id DESC; 
    

    首先。不要期望在与数据库的任何基于 GUI 的交互上运行一个查询,然后再运行另一个查询,并希望它会从新查询返回结果的子集。

    【讨论】:

      【解决方案2】:

      假设您的 id 值如下所示:

      9 - Asus TUF
      

      您可以尝试仅使用数字部分进行排序:

      SELECT *
      FROM tbProduct
      WHERE name = '%ASUS%'
      ORDER BY CAST(SUBSTRING_INDEX(id, ' ', 1) AS UNSIGNED);
      

      【讨论】:

      • 我的意思是,当点击排序时,搜索值是明确的,所以“WHERE name = '%ASUS%'”不再起作用了
      • 我不明白你的评论。此时,您应该在问题中包含清晰的示例表数据以及所需的输出。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      相关资源
      最近更新 更多