首页 » LANMP » mysql » 正文

mysql按照in中给定的顺序查询出来

先给张表

如果这样查

结果如下:

id pid
1 1
3 3
5 5

如果我们
要按照 in(3,1,5) 中原来的顺序排列,即 3,1,5 这样呢?

两种写法:

两条SQL语句都是如下结果:

id pid
3 3
1 1
5 5

SUBSTRING_INDEX(str,delim,count)

Returns the substring from string str before count occurrences of the delimiter delim. If count is positive, everything to the left of the final delimiter (counting from the left) is returned. If count is negative, everything to the right of the final delimiter (counting from the right) is returned. SUBSTRING_INDEX() performs a case-sensitive match when searching for delim.

译文:

在计数定界符delimiter之前,返回字符串str的子串。 如果count是正数,则返回最后一个分隔符左边的数字(从左数起)。 如果计数是负数,则返回最后一个分隔符右边的数字(从右数起)。 当搜索delim时,SUBSTRING_INDEX()执行区分大小写的匹配。

FIND_IN_SET(str,strlist)

Returns a value in the range of 1 to N if the string str is in the string list strlist consisting of N substrings. A string list is a string composed of substrings separated by , characters. If the first argument is a constant string and the second is a column of type SET, the FIND_IN_SET() function is optimized to use bit arithmetic. Returns 0 if str is not in strlist or if strlist is the empty string. Returns NULL if either argument is NULL. This function does not work properly if the first argument contains a comma (,) character.

译文:

如果字符串str位于由N个子字符串组成的字符串列表strlist中,则返回1到N范围内的值。 字符串列表是一个字符串,由字符分隔的子字符串组成。 如果第一个参数是一个常量字符串,第二个参数是一个SET类型的列,那么FIND_IN_SET()函数将被优化以使用位算术。 如果str不在strlist中,或者strlist是空字符串,则返回0。 如果任一参数为NULL,则返回NULL。 如果第一个参数包含一个逗号(,)字符,则此函数无法正常工作。

发表评论

正在加载验证码......

请先完成验证