关力两次left join后的笛卡尔乘积的问题

kimsung 2013-11-20 10:42:20
tablea1行数据
tableb2行数据
tablec6行数据

select * from tablea a left join tableb b on a.id = b.id left join tablec c on a.id = c.id


查询结果12行数据是正常吗???
怎么写才能显示6行数据
...全文
467 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kimsung 2014-02-14
  • 打赏
  • 举报
回复
谢谢ACMAIN 我的提问大部分都是ACMAIN解答的... 我这弱爆了. 唉!
kimsung 2013-11-26
  • 打赏
  • 举报
回复
引用 7 楼 ACMAIN_CHM 的回复:
mysql> select * from tba;
+------+------+
| id   | name |
+------+------+
|    1 | a    |
+------+------+
1 row in set (0.00 sec)

mysql> select * from tbb;
+------+------+
| id   | name |
+------+------+
|    1 | b    |
|    1 | b    |
+------+------+
2 rows in set (0.00 sec)

mysql> select * from tbc;
+------+------+
| id   | name |
+------+------+
|    1 | c    |
|    1 | c    |
|    1 | c    |
|    1 | c    |
|    1 | c    |
|    1 | c    |
+------+------+
6 rows in set (0.00 sec)

mysql> set @a=0;set @b=0;set @c=0;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> select a.name,b.name,c.name
    -> from (select @c:=@c+1 as i,name from tbc) c left join (select @b:=@b+1 as
 i,name from tbb) b on c.i=b.i
    ->  left join (select @a:=@a+1 as i,name from tba) a on c.i=a.i;
+------+------+------+
| name | name | name |
+------+------+------+
| a    | b    | c    |
| NULL | b    | c    |
| NULL | NULL | c    |
| NULL | NULL | c    |
| NULL | NULL | c    |
| NULL | NULL | c    |
+------+------+------+
6 rows in set (0.00 sec)

mysql>
谢谢. 只能用rownum方式了... 而且这种sql在程序里面不好调用... 或者还有其他方法吗?
WWWWA 2013-11-20
  • 打赏
  • 举报
回复
举例说明要求
贴建表及插入记录的SQL,及要求结果出来看看
rucypli 2013-11-20
  • 打赏
  • 举报
回复
12行刚好是1*2*6

要想6行 就把某些列is null的行去掉
WWWWA 2013-11-20
  • 打赏
  • 举报
回复
举例说明要求
贴建表及插入记录的SQL,及要求结果出来看看
ACMAIN_CHM 2013-11-20
  • 打赏
  • 举报
回复
mysql> select * from tba;
+------+------+
| id   | name |
+------+------+
|    1 | a    |
+------+------+
1 row in set (0.00 sec)

mysql> select * from tbb;
+------+------+
| id   | name |
+------+------+
|    1 | b    |
|    1 | b    |
+------+------+
2 rows in set (0.00 sec)

mysql> select * from tbc;
+------+------+
| id   | name |
+------+------+
|    1 | c    |
|    1 | c    |
|    1 | c    |
|    1 | c    |
|    1 | c    |
|    1 | c    |
+------+------+
6 rows in set (0.00 sec)

mysql> set @a=0;set @b=0;set @c=0;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> select a.name,b.name,c.name
    -> from (select @c:=@c+1 as i,name from tbc) c left join (select @b:=@b+1 as
 i,name from tbb) b on c.i=b.i
    ->  left join (select @a:=@a+1 as i,name from tba) a on c.i=a.i;
+------+------+------+
| name | name | name |
+------+------+------+
| a    | b    | c    |
| NULL | b    | c    |
| NULL | NULL | c    |
| NULL | NULL | c    |
| NULL | NULL | c    |
| NULL | NULL | c    |
+------+------+------+
6 rows in set (0.00 sec)

mysql>
kimsung 2013-11-20
  • 打赏
  • 举报
回复
引用 2 楼 rucypli 的回复:
12行刚好是1*2*6 要想6行 就把某些列is null的行去掉
写上了.
kimsung 2013-11-20
  • 打赏
  • 举报
回复
引用 3 楼 WWWWA 的回复:
举例说明要求 贴建表及插入记录的SQL,及要求结果出来看看
写上了
kimsung 2013-11-20
  • 打赏
  • 举报
回复
create table tba \(id int, name varchar\);
create table tbb \(id int, name varchar\);
create table tbc \(id int, name varchar\);

insert into tba values\(1,'a'\);
insert into tbb values\(1,'b'\);
insert into tbb values\(1,'b'\);
insert into tbc values\(1,'c'\);
insert into tbc values\(1,'c'\);
insert into tbc values\(1,'c'\);
insert into tbc values\(1,'c'\);
insert into tbc values\(1,'c'\);
insert into tbc values\(1,'c'\);
tba.name   tbb.name  tbc.name
--------------------------------
a          b         c
null       b         c
null       null      c
null       null      c
null       null      c
null       null      c
内容概要:本文详细介绍了一种基于三电平ANPC-VSG(虚拟同步发电机)构网型逆变器的复合控制策略,聚焦于双闭环控制与中点电位平衡控制的实现,适用于光伏储能系统并网的Simulink仿真模型。该模型为未发表的原创研究成果,涵盖了逆变器在并网过程中的动态响应、稳定性控制以及中点电位的有效调节,旨在提升新能源并网系统的稳定性与电能质量。文中还探讨了多种相关控制技术,如DPWMA调制、正负序分离控制、前馈控制等,充分展现了该系统在复杂电网环境下的适应性与先进性。; 适合人群:面向具备电力电子、新能源并网或自动控制理论基础的科研人员与工程技术人员,特别适合从事光伏储能、虚拟同步机、三电平逆变器等相关课题研究的研究生、高校教师及企业研发工程师。; 使用场景及目标:①用于光伏储能系统并网仿真,验证VSG控制策略在动态响应与稳定性方面的有效性;②研究三电平ANPC逆变器在不平衡工况下的中点电位控制性能;③作为高级电力系统仿真的教学与科研平台,支撑学术论文撰写、项目申报及关键技术攻关。; 阅读建议:建议结合提供的Simulink仿真模型进行实践操作,重点剖析双闭环控制结构的设计原理与中点电位平衡机制的实现细节,同时参考文中提及的DPWMA调制与前馈控制等辅助策略,以拓宽研究视野与技术路径。完整资源可通过指定公众号或网盘链接获取。

57,063

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧