表A
id title
1 姓名
2 单位
3 年龄
--------------------------
表B
id pid content
1 1 张三
2 2 计生委
3 1 李四
4 2 发改委
5 3 46
6 1 赵五
7 2 财政部
--------------------------
想连接两表实现输出如下:
id title pid content
1 姓名 1 张三
2 单位 2 计生委
3 年龄 null null
1 姓名 1 张三
2 单位 2 计生委
3 年龄 3 46
1 姓名 1 张三
2 单位 2 计生委
3 年龄 null null===========================
请问sql语句如何实现,想了很久
目前我试过单纯用左连接无法输出一个两个B表null行SQL
id title
1 姓名
2 单位
3 年龄
--------------------------
表B
id pid content
1 1 张三
2 2 计生委
3 1 李四
4 2 发改委
5 3 46
6 1 赵五
7 2 财政部
--------------------------
想连接两表实现输出如下:
id title pid content
1 姓名 1 张三
2 单位 2 计生委
3 年龄 null null
1 姓名 1 张三
2 单位 2 计生委
3 年龄 3 46
1 姓名 1 张三
2 单位 2 计生委
3 年龄 null null===========================
请问sql语句如何实现,想了很久
目前我试过单纯用左连接无法输出一个两个B表null行SQL
解决方案 »
- mysql的substring
- 数据库备份出来的莫名其妙的问题
- 一个SQL2005转MYSQL2005存储过程的问题
- 加不加单引号的区别??
- mysql5.0使用游标时后面的sql语句是生态拼成的,如何实现?
- 关于数据库的转移问题
- (大虾救命!!)有谁知道postgresql源程序能不能在WINDOWS下用VC等编译工具直接调试?
- 删除表B中 AID =表A中AID的记录 条件是表A的 S= 0 表B的id IN (1,2,3)
- mysqli query删除语句成功失败都返回是1
- mysql ibdata1文件被污染or损坏,ib_logfile1,iblogfile2删除。怎么恢复数据库
- mysql5.6移动目录以后无法启动
- mysql,cross 连接查询
表Aid 姓名 单位 年龄
SET @BB1=0;
SET @A=1;
SET @A1=1;
SELECT D.ID,D.title,E.pid,E.content FROM (
SELECT * FROM AA1,(
SELECT DISTINCT BZ FROM (
SELECT *,@A:=IF(@BB+1=PID,@A,@A+1) AS BZ,@BB:=PID FROM BB) A) C) D
LEFT JOIN
(SELECT *,@A1:=IF(@BB1+1=PID,@A1,@A1+1) AS BZ,@BB1:=PID FROM BB) E
ON D.BZ=E.BZ AND D.ID=E.PID
有一点不太明白,就是变量BB和BB1在查询中起到什么作用,如果去掉结果就不对了。
如 1、2、1、2、3、1、2这样的,否则自行增加字段以确定哪些
记录为1组
想再问下,像这种A表行不确定,然后B表又关联A表的情况,如何设计表的两表结构可以让查询语句简洁高效一些?
表A
id title
1 姓名
2 单位
3 年龄
--------------------------
表B
id pid content mid
1 1 张三 1
2 2 计生委 1
3 1 李四 2
4 2 发改委 2
5 3 46 2
6 1 赵五 3
7 2 财政部 3这样的结构可以了,还是有更好的方法?