MySQL存储过程循环遍历2个表,选择值并存储在第3个表中
我有3个表MySQL存储过程循环遍历2个表,选择值并存储在第3个表中,mysql,stored-procedures,Mysql,Stored Procedures,我有3个表用户,备忘录,和备忘录 用户: +---+----------+ |ID | NAME | +---+----------+ | 1 | Mike | | 4 | Susan | | 5 | Peter | | 6 | Mary | +---+----------+ 备忘录: +---+----------+ |ID | CONTENT | +---+----------+ | 15| Hello | | 16| World | |
用户
,备忘录
,和备忘录
用户
:
+---+----------+
|ID | NAME |
+---+----------+
| 1 | Mike |
| 4 | Susan |
| 5 | Peter |
| 6 | Mary |
+---+----------+
备忘录
:
+---+----------+
|ID | CONTENT |
+---+----------+
| 15| Hello |
| 16| World |
| 17| Foo |
| 23| Bar |
+---+----------+
我想创建一个带有嵌套循环的存储过程,为已经读取的备忘录创建一个“读取映射”,创建如下内容:
阅读备忘录:
+---------+----------+
| MEMO_ID | USER_ID |
+---------+----------+
| 15 | 1 |
| 15 | 4 |
| 15 | 5 |
| 15 | 6 |
| 16 | 1 |
| 16 | 4 |
| 16 | 5 |
| 16 | 6 |
| 17 | 1 |
| 17 | 4 |
| 17 | 5 |
| 17 | 6 |
| 23 | 1 |
| 23 | 4 |
| 23 | 5 |
| 23 | 6 |
+---------+----------+
这可能吗?提前谢谢你 您可以使用语法创建memos\u read
表:
CREATE TABLE memos_read AS
SELECT m.ID AS MEMO_ID, u.ID AS USER_ID
FROM memos m
CROSS JOIN users u
输出符合您的要求 @Nick's应该适合你;但是,如果您对创建新表不感兴趣,而是在查询中动态使用“读取映射”;你可以利用一个
一般查询结构如下所示:
SELECT
read_map.MEMO_ID,
read_map.USER_ID,
...
FROM
(
SELECT
m.ID AS MEMO_ID,
u.ID AS USER_ID
FROM users AS u
CROSS JOIN memos AS m
) AS read_map
... -- here you can join with other tables as required
WHERE ...
这只是交叉连接,不需要sp。