MySQL 查询使用其他两个表中的所有 id 组合预填充连接表

标签 mysql sql

我有以下查询,它使用给定用户的所有“主题”选项填充联接表。

INSERT INTO join_themes_users (join_theme_id, join_user_id);
SELECT theme_id, 1
FROM themes

我现在需要做的是编辑此查询以使用所有用户的所有主题选项填充连接表

这可以在单个查询中完成吗?还是我需要在 PHP 中创建一个 for 循环?

上面的查询产生的结果看起来像......

join_id     |     user_id      |      theme_id
----------------------------------------------------
1              1                  1
2              1                  2
3              1                  3
...

我需要的是这样的东西......

join_id     |     user_id      |      theme_id
----------------------------------------------------
1              1                  1
2              1                  2
3              1                  3
...
14             2                  1
15             2                  2
16             2                  3
...
27             3                  1
28             3                  2
29             3                  3
...

最佳答案

要获得交叉连接表的所有组合:

INSERT INTO join_themes_users (join_theme_id, join_user_id)
SELECT themes.theme_id, users.user_id
FROM themes 
CROSS JOIN users

关于MySQL 查询使用其他两个表中的所有 id 组合预填充连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26280895/

相关文章:

php - 在mySQL中减去两个查询结果

sql - 来自多个表的内部连接 ​​sqlite

mysql - 用于获取按日期排序的最后创建内容的用户的 SQL 查询

java - 从表中检索最新记录(表有 3 个日期列)

mysql - Oracle SQL 中的多次插入像 MySQL 一样吗?

mysql 删除存在同名的数据库

java - 错误: Client does not support authentication protocol requested by server; consider upgrading MySQL client

c# - Nhibernate DetachedCriteria Left Outer Join 子查询

php - 优化集合包含查询

SQL 基于时间的触发器