gpt4 book ai didi

mysql - 嵌套的 MySQL 查询和字母数字排序

转载 作者:行者123 更新时间:2023-11-29 02:45:57 25 4
gpt4 key购买 nike

因此,一段时间以来,我一直在尝试在我的代码中将嵌套的 MySQL 查询与表的字母数字排序结合使用。

以下表为例:

Subprocess_has_Characteristic{
ID (PK)
SubProcessID (FK)
CharacteristicID (FK)
}

以下是表格的示例值:

ID 子进程 ID 特征 ID


ID1 子进程 ID1 特征 ID1

ID2 子进程 ID1 特征 ID2

ID3 子进程 ID2 特征 ID1

ID4 子进程 ID2 特征 ID2

... ... ...

ID11 子进程 ID1 特征 ID5


这意味着我们将需要以下 MySQL 查询来按字母数字顺序对表进行排序并避免以下情况:{ ID1, ID10, ID11, ID2, ID3, ..., ID9} 并获得以下内容:{ ID1, ID2, . .., ID9; ID10, ID11

SELECT *,substring(ID, 1, 2) as bcd, 
CONVERT(SUBSTRING(ID, 2, 5),UNSIGNED INTEGER)
AS num from `Subprocess_has_Characteristic` order by bcd,num;

完成后,我目前在尝试将此查询嵌套在另一个查询中以仅根据特定的 SubProcessID 过滤查询时遇到问题,如下所示:

SELECT * FROM `Subprocess_has_Characteristic` WHERE `SubProcessID` = 'SubProcessID1'

如果我单独使用这个查询,结果显示如下:

ID 子进程 ID 特征 ID


ID1 子进程 ID1 特征 ID1

ID11 子进程 ID1 特征 ID5

ID2 子进程 ID1 特征 ID2


而我需要它像这样显示:

ID 子进程 ID 特征 ID


ID1 子进程 ID1 特征 ID1

ID2 子进程 ID1 特征 ID2

ID11 子进程 ID1 特征 ID5


这就是我试图实现嵌套前面提到的两个 MySQL 查询的目的。不幸的是,我的代码无法正常工作。

我一直在尝试使用的查询如下:

SELECT * FROM `Subprocess_has_Characteristic` WHERE `SubProcessID` = 'SubProcessID1' IN (
SELECT *,substring(ID, 1, 13) as bcd,
CONVERT(SUBSTRING(ID, 14, 20),UNSIGNED INTEGER)
AS num from `Subprocess_has_Characteristic` order by bcd,num);

不幸的是,这会产生以下错误:

#1241 - Operand should contain 1 column(s)

我的MySQL语法有没有错误?

编辑

我将示例更改为更精确的案例场景;希望这有助于理解我想要实现的目标。

最佳答案

Length()函数返回ID中的字符个数,所以只有个位数的ID会排在最前面,以此类推在...

SELECT * FROM `Subprocess_has_Characteristic`
WHERE `SubProcessID` = 'SubProcessID1'
ORDER BY LENGTH(ID), ID;

关于mysql - 嵌套的 MySQL 查询和字母数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42168095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com