SQL将两个表合并到一个表中,每个表后面都有重复的不同值
我试图将两个表合并起来,在每个不同的用户旁边列出所有可用的产品。因此,对于每个不同的用户,产品都会重复。如果有2个用户和3个产品,则该表将有6行长 表ASQL将两个表合并到一个表中,每个表后面都有重复的不同值,sql,Sql,我试图将两个表合并起来,在每个不同的用户旁边列出所有可用的产品。因此,对于每个不同的用户,产品都会重复。如果有2个用户和3个产品,则该表将有6行长 表A select user from users group by user; user u_1 u_2 表B select product from products group by product; user p_1 p_2 p_3 期望输出 user product u_1 p_1 u_1 p_2 u_1 p_3
select user from users group by user;
user
u_1
u_2
表B
select product from products group by product;
user
p_1
p_2
p_3
期望输出
user product
u_1 p_1
u_1 p_2
u_1 p_3
u_2 p_1
u_2 p_2
u_2 p_3
以下是我迄今为止的代码:
select a.user, b.product from (select user from users group by user) a
(select product from products group by product) b;
只需使用笛卡尔连接,如下所示:
SELECT users.user, products.product FROM users, products ORDER BY users.user ASC;
它将生成每个用户和组组合的结果。您在查询中忘记了逗号 MySQL 5.6架构设置:
CREATE TABLE `users`
(
user VARCHAR(255)
);
CREATE TABLE `products`
(
product VARCHAR(255)
);
INSERT INTO `users` VALUES ('u_1'), ('u_2');
INSERT INTO `products` VALUES ('p_1'), ('p_2'), ('p_3');
SELECT * FROM `users`, `products` ORDER BY `user` ASC
| user | product |
|------|---------|
| u_1 | p_1 |
| u_1 | p_2 |
| u_1 | p_3 |
| u_2 | p_1 |
| u_2 | p_2 |
| u_2 | p_3 |
查询1:
CREATE TABLE `users`
(
user VARCHAR(255)
);
CREATE TABLE `products`
(
product VARCHAR(255)
);
INSERT INTO `users` VALUES ('u_1'), ('u_2');
INSERT INTO `products` VALUES ('p_1'), ('p_2'), ('p_3');
SELECT * FROM `users`, `products` ORDER BY `user` ASC
| user | product |
|------|---------|
| u_1 | p_1 |
| u_1 | p_2 |
| u_1 | p_3 |
| u_2 | p_1 |
| u_2 | p_2 |
| u_2 | p_3 |
:
CREATE TABLE `users`
(
user VARCHAR(255)
);
CREATE TABLE `products`
(
product VARCHAR(255)
);
INSERT INTO `users` VALUES ('u_1'), ('u_2');
INSERT INTO `products` VALUES ('p_1'), ('p_2'), ('p_3');
SELECT * FROM `users`, `products` ORDER BY `user` ASC
| user | product |
|------|---------|
| u_1 | p_1 |
| u_1 | p_2 |
| u_1 | p_3 |
| u_2 | p_1 |
| u_2 | p_2 |
| u_2 | p_3 |
使用
(符合建议的ANSI-92标准,而不是使用包含逗号的ANSI-89标准来分隔SQL语句中的表名):