gpt4 book ai didi

mysql - 从第一个表中选择 1 行,然后从其他表中选择 n 行,然后返回到第一个表并选择第 2 行,依此类推

转载 作者:行者123 更新时间:2023-11-29 09:37:47 27 4
gpt4 key购买 nike

我有这个 SQL 脚本:

CREATE TABLE `table_1` (
`IDTable_1` int(11) NOT NULL,
PRIMARY KEY (`IDTable_1`)
);

CREATE TABLE `table_2` (
`IDTable_2` int(11) NOT NULL,
`FK_Table_1` int(11) NOT NULL,
PRIMARY KEY (`IDTable_2`,`FK_Table_1`),
KEY `FK_Table_1` (`FK_Table_1`)
);

INSERT INTO `table_1` (`IDTable_1`) VALUES
(1),
(2),
(3);

INSERT INTO `table_2` (`IDTable_2`, `FK_Table_1`) VALUES
(1, 1),
(1, 2),
(2, 1),
(2, 3);

我想要的是创建一个查询来获取如下数据:

table_1中的 1 行

出现 IDTable_1 的 n 行

table_1中的下一行

出现以下 IDTable_1 的 n 行

等等。

使用所提供脚本中的数据的预期结果示例:

/*ID 1 from table_1*/
1

/*IDs from table_2 Where ID 1 from table_1 appears*/
1
2

/*ID 2 from table_1*/
2

/*IDs from table_2 Where ID 2 from table_1 appears*/
1

/*ID 3 from table_1*/
3

/*IDs from table_2 Where ID 3 from table_1 appears*/
2

但我不知道如何实现这一目标。任何想法将不胜感激。

最佳答案

我们可以使用带有计算列的联合查询来做到这一点:

SELECT id
FROM
(
SELECT IDTable_1 AS id, IDTable_1 AS pos1, 1 AS pos2 FROM table_1
UNION ALL
SELECT IDTable_2, FK_Table_1, 2 FROM table_2
) t
ORDER BY
pos1,
pos2;

请注意,这里需要进行两级排序。第一级 pos1 将同一 IDTable_1 组中的所有记录放置在一起。然后,在每个组中,pos2 级别将第一个表中的记录放置在第二个表的记录之前。

关于mysql - 从第一个表中选择 1 行,然后从其他表中选择 n 行,然后返回到第一个表并选择第 2 行,依此类推,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57238453/

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