相关疑难解决方法(0)

如何按IN子句的顺序选择mysql行

例如我在表EMPLOYEE中:

(code, name)
(1, 'Jimmy')
(2, 'Albert')
(3, 'Michelle')
(4, 'Felix' )
Run Code Online (Sandbox Code Playgroud)

如果您这样做:(从EMPLOYEE中选择*)您将得到:

(1, 'Jimmy')
(2, 'Albert')
(3, 'Michelle')
(4, 'Felix' )
Run Code Online (Sandbox Code Playgroud)

如果您这样做:(从EMPLOYEE中选择*,您将获得(1,3,2,4)中的代码:

(1, 'Jimmy')
(2, 'Albert')
(3, 'Michelle')
(4, 'Felix' )
Run Code Online (Sandbox Code Playgroud)

如何按IN子句中的CSV值顺序获取它,原样如何?

(1, 'Jimmy')
(3, 'Michelle')
(2, 'Albert')
(4, 'Felix' )
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-order-by

9
推荐指数
1
解决办法
4470
查看次数

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

因此,在我的数据库中,我存储乐器名称(和各种其他属性).假设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"));
Run Code Online (Sandbox Code Playgroud)

结果表:

id    name
1     "Flute 2"
2     "Bass Flute"
3     "Flute 10"
4     "Flute 7"
Run Code Online (Sandbox Code Playgroud)

这让我可以通过查询"萨克斯风"来选择整个乐器系列,如"Soprano Saxophone","Alto Saxophone"等.

在该特定示例中,结果由它们的id(您可以假设为auto_incremented)引发.更理想的是按字母顺序排序,是吗?

id    name
2     "Bass Flute"
3     "Flute 10"
1     "Flute 2"
4     "Flute 7"
Run Code Online (Sandbox Code Playgroud)

这样做很好,但作为音乐家,他们喜欢和数据库管理员打成一片,并且不要在长笛的结果中对"长笛"上面列出的"低音长笛"表示友善,并且真的不善待"长笛10"在"长笛2"之前列出.

因此,看到没有ORDER BY score_order(这太容易了,不会......),我怎么能引入某种订购系统来正确显示仪器?

通过头脑风暴,我找到了一个解决方案:我可以添加一个整数类型的列,并根据它们的重要性(即Piccolos将为"1",Flutes"2"等)对这些工具进行"排名":

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

id    name           rank
3     "Flute 10" …
Run Code Online (Sandbox Code Playgroud)

php mysql sql sorting

3
推荐指数
2
解决办法
3341
查看次数

标签 统计

mysql ×2

sql ×2

php ×1

sorting ×1

sql-order-by ×1