SQL合并两个表,每两个表中的每一个重复重复不同的值

时间:2018-10-27 19:45:37

标签: sql

我正在尝试合并两个表,以在每个不同的用户旁边列出所有可用的产品。因此,对于每个不同的用户,所有产品都会重复使用。如果有2个用户和3个产品,则表的长度为6行。

Table_A

$_SESSION['test'] = array();

Table_B

if(isset($_POST['process'])) {
    if(!isset($_SESSION['test'])) {
        $_SESSION['test'] = array();
    }

    $array_merge = array_push($_SESSION['test'], $_POST['process']);
}

所需的输出

select user from users group by user;

user 
u_1
u_2

到目前为止,这是我的代码:

select product from products group by product;

user 
p_1
p_2
p_3

3 个答案:

答案 0 :(得分:1)

使用cross join

符合建议的 ANSI-92 标准,而不是使用 ANSI-89 标准,该标准包含逗号来分隔表名SQL语句):

select a.user, b.product 
  from users a
 cross join products b 
 group by a.user, b.product;

DB-Fiddle Demo

答案 1 :(得分:0)

只需像这样使用笛卡尔联接:

SELECT users.user, products.product FROM users, products ORDER BY users.user ASC;

它将产生每个用户和组组合的结果。

答案 2 :(得分:0)

您在查询中忘记了逗号。

SQL Fiddle

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');

查询1

SELECT * FROM `users`, `products` ORDER BY `user` ASC

Results

| 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 |