尝试以良好的性能从 table 获取数据
Trying to fetch data from table with good performance
我正在尝试获取客户和所有者数据
客户
|cnumber |id |
|080204220 |32859471000|
|907501981|6029151000|
角色
|id|type|
|32859471000|所有者|
|6029151000|客户|
结果集
id|number|owner number|type|
|32859471000|080204220 |080204220 |所有者
|6029151000|907501981|080204220 |客户
查询
select c.id,sub.cnumber,c.cnumber, r.roletype
from customer c
inner join role r on c.id = r.id
left outer join (select c.cnumber ,r.roletype,c.id
from customer c
INNER JOIN role r
ON c.id = r.id ) sub on sub.roletype='owner';
这个查询给出了正确的结果,但是同表的左外连接可能会影响性能,有没有其他方法可以实现这个?
据我所知,您需要在所有其他人中显示一个“所有者”客户。
由于示例数据中只有一个所有者,我将使用“交叉连接”(笛卡尔连接)
select c.id,sub.cnumber,c.cnumber, r.roletype
from customer c
inner join role r on c.id = r.id
cross join (select c.cnumber ,r.roletype,c.id
from customer c
INNER JOIN role r
ON c.id = r.id where r.roletype='owner') sub
select c.id,sub.cnumber,c.cnumber, r.roletype
from customer c
inner join role r on c.id = r.id
left outer join (select c.cnumber ,r.roletype,c.id
from customer c
INNER JOIN role r
ON c.id = r.id ) sub on sub.roletype='owner';
我希望你只使用这个。
select c.id,sub.cnumber,c.cnumber, r.roletype
from customer c
inner join role r on c.id = r.id
left outer join (select c.cnumber ,r.roletype,c.id
from customer c
INNER JOIN role r
ON c.id = r.id ) sub on sub.roletype='owner';
我正在尝试获取客户和所有者数据
客户
|cnumber |id |
|080204220 |32859471000|
|907501981|6029151000|
角色
|id|type|
|32859471000|所有者|
|6029151000|客户|
结果集
id|number|owner number|type|
|32859471000|080204220 |080204220 |所有者
|6029151000|907501981|080204220 |客户
查询
select c.id,sub.cnumber,c.cnumber, r.roletype
from customer c
inner join role r on c.id = r.id
left outer join (select c.cnumber ,r.roletype,c.id
from customer c
INNER JOIN role r
ON c.id = r.id ) sub on sub.roletype='owner';
这个查询给出了正确的结果,但是同表的左外连接可能会影响性能,有没有其他方法可以实现这个?
据我所知,您需要在所有其他人中显示一个“所有者”客户。
由于示例数据中只有一个所有者,我将使用“交叉连接”(笛卡尔连接)
select c.id,sub.cnumber,c.cnumber, r.roletype
from customer c
inner join role r on c.id = r.id
cross join (select c.cnumber ,r.roletype,c.id
from customer c
INNER JOIN role r
ON c.id = r.id where r.roletype='owner') sub
select c.id,sub.cnumber,c.cnumber, r.roletype
from customer c
inner join role r on c.id = r.id
left outer join (select c.cnumber ,r.roletype,c.id
from customer c
INNER JOIN role r
ON c.id = r.id ) sub on sub.roletype='owner';
我希望你只使用这个。
select c.id,sub.cnumber,c.cnumber, r.roletype
from customer c
inner join role r on c.id = r.id
left outer join (select c.cnumber ,r.roletype,c.id
from customer c
INNER JOIN role r
ON c.id = r.id ) sub on sub.roletype='owner';