我有两个名为oc_users和oc_groups的表,两个表之间没有特定的关系,如下所示,所以,这里我想用每个组映射每个用户:
1)表1: 从oc_users中选择uid;
+-----------------+
| uid |
+-----------------+
| manesh@abc.in |
| pankaj |
| sumit |
+-----------------+
2)表2: 从oc_groups中选择gid;
+---------+
| gid |
+---------+
| qlc |
| qlc-web |
+---------+
然后我想要o / p之类的:
+---------+-----------------+
| gid | uid |
+---------+-----------------+
| qlc | manesh@abc.in |
| qlc | pankaj |
| qlc | sumit |
| qlc-web | manesh@abc.in |
| qlc-web | pankaj |
| qlc-web | sumit |
+---------+-----------------+
答案 0 :(得分:0)
您需要使用CROSS JOIN
(新SQL语法:ANSI SQL-92
)
SELECT gid, uid
FROM oc_users CROSS JOIN oc_groups
ORDER BY gid, uid
答案 1 :(得分:0)
使用此
select * from oc_user , oc_groups ORDER BY gid, uidS
这将打印Cartesian multiplecation of rows.
答案 2 :(得分:0)
使用CROSS JOIN(Cartesian Product Join)
将解决您的目的。供您参考
没有WHERE子句的交叉连接会生成连接中涉及的表的笛卡尔积。 Cartesian
产品结果集的大小是第一个表中的行数乘以第二个表中的行数。
这样就可以了,
SELECT gid, uid
FROM oc_users CROSS JOIN oc_groups;
始终选择“CROSS JOIN”语法而不是一无所获。由于这是ANSI格式,您可以在数据库中使用它,它在迁移过程中也很有用,因为您不需要在查询中更改任何内容。
希望这可以帮助你!!