我需要按照某个顺序按状态ID搜索记录

时间:2016-08-09 05:26:44

标签: mysql

我的sql小提琴:http://sqlfiddle.com/#!9/012138/1

我有以下表格:

  

产品(表)

id INT(10)
productname VARCHAR(50)
statusid INT(10)

假设我们有以下记录:

id  productname     statusid
5   P1000              2
6   P2000              1
7   P3000              3

现在您可以看到状态ID是1,2,3。我希望按照状态ID获取记录,但是我们存储的状态ID是以不同的方式,所以我不能直接通过statusid按顺序编写查询。因为我需要按照以下状态ID顺序获取记录

首先是statusid 3,然后是状态ID 1然后是状态ID 2.如何编写查询?

2 个答案:

答案 0 :(得分:3)

您可以尝试使用FIND_IN_SET

SELECT 
* 
FROM products
ORDER BY FIND_IN_SET(statusid,'3,1,2')

WORKING DEMO

注意:

在此处添加自定义序列FIND_IN_SET(statusid,'3,1,2')

关于FIND_IN_SET的简要说明:

<强>描述

MySQL FIND_IN_SET()返回字符串的位置,如果它在字符串列表中存在(作为子字符串)。字符串列表本身是一个字符串,包含以','(逗号)字符分隔的子字符串。

当字符串列表中不存在搜索字符串时,此函数返回0,如果任一参数为NULL,则返回NULL

<强>语法

FIND_IN_SET (search string, string list)

<强>参数

Name            Description
search string   A string which is to be looked for in following list of arguments.
string list     List of strings to be searched if they contain the search string.

Related post

或者,您可以使用FIELD()函数来完成

答案 1 :(得分:2)

或使用Watir::HTMLElementCollection:0x000000024b88c0

FIELD

Demo Here