按任意顺序对 SQL 行输出进行排序?

2024-04-27

因此,在我的数据库中,我存储乐器名称(以及各种其他属性)。比方说id是主键,并且name是唯一的密钥。

在 PHP 脚本中,我按仪器类别选择项目,如下所示:

$name = mysql_real_escape_string($_POST['name']);
$row = mysql_fetch_row(mysql_query("SELECT * FROM `instruments` WHERE name LIKE '%$name%' ORDER BY id"));

结果表:

id    name
1     "Flute 2"
2     "Bass Flute"
3     "Flute 10"
4     "Flute 7"

这使我可以通过查询“萨克斯管”来选择整个乐器系列,例如“高音萨克斯管”、“中音萨克斯管”等。

在该特定示例中,结果按其 id 排序(您可以假设它是自动递增的)。更理想的是按字母顺序排序,是吗?

id    name
2     "Bass Flute"
3     "Flute 10"
1     "Flute 2"
4     "Flute 7"

这很好用,但作为音乐家,他们喜欢与数据库管理员搞混,并且不喜欢在长笛结果中将“低音长笛”列在“长笛”上方,并且really请勿将“Fute 10”列在“Fute 2”之前。

所以,既然没有ORDER BY score_order(这太简单了,不是吗...),我如何引入某种排序系统来正确显示仪器?

经过集思广益,我想到了一个解决方案: 我可以再添加一列整数类型,并根据乐器的重要性对它们进行“排名”(即短笛为“1”,长笛为“2”等):

... nts` WHERE name LIKE '%$name%' ORDER BY rank, name"));

id    name           rank
3     "Flute 10"     2
1     "Flute 2"      2
4     "Flute 7"      2
2     "Bass Flute"   5

然而,这并没有考虑到“长笛 10”出现在“长笛 2”之前的事实,字母数字.

理想结果表(按顺序排列)rank,然后由name):

id    name           rank
6     "Piccolo"      1
1     "Flute 2"      2
4     "Flute 7"      2
3     "Flute 10"     2
5     "Alto Flute"   4
2     "Bass Flute"   5

有没有办法通过分析整个数字而不是逐个数字来获得 SQL 订单记录?


您可以创建一个不同的订单,执行类似的操作。这是一个黑客行为。

select * from table
order by (
     case name
     when 'Health' then 0 
     when 'Flute 10' then 1
     when 'Freeze' then 2
     when 'Bass Flute' then 3
     end
)

使用 id 列可能是一个更好的主意。

select * from table
order by (
    case id
    when 3 then 0 
    when 1 then 1
    when 4 then 2
    when 2 then 3
    end
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按任意顺序对 SQL 行输出进行排序? 的相关文章

随机推荐

  • 如何将 JMX 绑定到特定接口?

    我目前正在启动我的 Java VMcom sun management jmxremote 属性 以便我可以通过 JConsole 连接到它进行管理和监控 不幸的是 它监听机器上的所有接口 IP 地址 在我们的环境中 经常会出现多个 Jav
  • 处理 Javascript 中的浮点精度[重复]

    这个问题在这里已经有答案了 我有大量数值y在 JavaScript 中 我想通过将它们四舍五入到最接近的倍数来对它们进行分组x并将结果转换为字符串 如何解决烦人的浮点精度 例如 0 2 0 4 0 6000000000000001 我尝试过
  • 解析嵌套的 JSON Swift 3 [重复]

    这个问题在这里已经有答案了 我正在尝试在 Swift 3 中解析复杂的 JSON 文件 我在获取值时遇到问题 我找到了一些示例代码并尝试对其进行了一些调整 但它不起作用我当前收到错误 Type NSArray 没有下标成员 我什至不确定这是
  • WebStorm/PHPStorm 中的智能选项卡有什么作用?

    我对智能选项卡在一般偏好中的作用感到困惑 它说 仅通过空格即可对必要的列进行精细对齐 如果 如果未选中此复选框 则使用空格进行对齐 必要的 这是否意味着在这两种情况下都使用空格来对齐 这是否意味着它总是在后者中使用空格 而仅有时在前者中使用
  • 如何根据功能(自动)通过属性查看或隐藏字段?

    我只想查看员工 他的经理和 hr group hr user 组的 working hours 字段 如何隐藏该字段自动执行 无需编辑表单或触发按钮 class InheritHrEmployee models Model inherit
  • Grails“max”带有关联的子查询,仅获取最新的 hasMany

    简化的域模型 Txn 如交易中 有许多 TxnStatus TxnStatus 有一个日期时间 这是一个遗留映射 所以我无法更改 DB Txn 上的映射 static mapping txnStatus column MessageID i
  • JavaScript 运行时错误:无法获取未定义或空引用的属性“msie”

    我只是尝试更改我的 jquery ui 对母版页的引用 我仅在 Internet Explorer 上收到上述错误 我在 Firefox 和 Chrome 上没有收到错误消息 这是抛出错误的 jquery 代码 return a brows
  • 仅横向应用程序中的 GameCenter 身份验证抛出 UIApplicationInvalidInterfaceOrientation

    问题 如果用户未登录 GameCenter 帐户 GameCenter 身份验证视图以纵向模式启动 在 ios 5 中 有一个模式对话框 要求登录 但是如果我在 xcode 项目摘要 或supportedInterfaceOrientati
  • 根据使用频率随机生成字母?

    如何根据常用语音中的使用频率随机生成字母 任何伪代码都值得赞赏 但如果用 Java 实现就更棒了 否则 只需朝正确的方向戳一下就会有所帮助 注意 我不需要生成使用频率 我确信我可以很容易地查找到它 我假设您将频率存储为 0 到 1 之间的浮
  • 使用IntelliJ编译Java 7,配置麻烦

    我正在使用 IntelliJ 并尝试让它与 Java 7 一起工作 我的 JDK 设置为指向最新的 JDK 此外 项目也设置使用它 然而 当尝试编写 Java7 代码时 它的语法无法被识别 请问我缺少什么 Set the 项目语言水平 to
  • 如何计算Java数组的内存大小?

    我知道如何通过添加三个部分来计算Java对象的内存大小 标头 属性 引用 我还知道Java数组也是一个对象 但是当我读到 Understanding the JVM Advanced Features and Best Practices
  • 如何检查 C# 中动态匿名类型上是否存在属性?

    我有一个匿名类型对象 我从方法中以动态方式接收该对象 我想检查该对象上是否存在属性 var settings new Filename temp txt Size 10 function void Settings dynamic sett
  • ANSI C - 清除字符串

    我有一个这样声明的字符串 str malloc sizeof char 128 我想彻底清除它 这样当我这样做时strncat 操作时 新字符将被写入到开头str 我需要清除它的原因是我正在用它本身的简化版本重写它 删除多余的空格 我建议你
  • 如何编写通用 C 函数来调用 Win32 函数?

    为了允许从脚本语言 用 C 编写 访问 Win32 API 我想编写一个如下所示的函数 void Call LPCSTR DllName LPCSTR FunctionName LPSTR ReturnValue USHORT Argume
  • optim() 中的错误:搜索单变量函数的全局最小值

    我正在尝试优化 R 中的函数 该函数是仅估计时负二项式的似然函数mu范围 这应该不是问题 因为该函数显然只有一个最大值点 但是 我无法达到理想的结果 需要优化的函数为 EMV lt function data par Mi lt par P
  • 如何使用 Autoit / Autohotkey 模仿 Visual Studio 的“Ctrl-K、C”两步宏行为?

    I m trying to set up AutoHotkey http www autohotkey com macros for some common tasks and I want the hotkeys to mimic Vis
  • Angular 4 中的多个顺序 API 调用

    我有一系列图像对象 console info gallery galleryArray 该数组的长度可以不同 我必须对该数组的每个项目发出 POST 请求 只有在前一个请求完成后 才能执行下一个请求 所以我尝试发出一系列可观察的请求 如下所
  • JSF 2.0 动态属性,无需创建新组件

    如何向未定义这些属性的组件添加新属性而不创建自己的属性 我想做这样的事情
  • 开始作业时无法识别功能

    我在模块 sysinfo psm1 中创建了一个函数 Get Uptime 并导入了该模块 C pstools gt get command Module sysinfo CommandType Name Definition Functi
  • 按任意顺序对 SQL 行输出进行排序?

    因此 在我的数据库中 我存储乐器名称 以及各种其他属性 比方说id是主键 并且name是唯一的密钥 在 PHP 脚本中 我按仪器类别选择项目 如下所示 name mysql real escape string POST name row