CREATETABLEA(
`C1`VARCHAR(10),
`C2`VARCHAR(10),
`C3`VARCHAR(10),
`C4`VARCHAR(10),
`C5`INT
INSERTINTOA
SELECT'华北','辽宁','沈阳','20020202',2UNIONALL
SELECT'华东','山东','青岛','18020133',3UNIONALL
SELECT'华北','北京','北京','7193',7UNIONALL
SELECT'华北','北京','北京','8358',5UNIONALL
SELECT'华北','北京','北京','9773',8UNIONALL
SELECT'华东','山东','青岛','18020133',5;
CREATETABLEB(
`C1`VARCHAR(10),
`C2`VARCHAR(10),
`C3`VARCHAR(10),
`C4`VARCHAR(10),
`C5`INT
INSERTINTOB
SELECT'华北','辽宁','沈阳','20020202',5UNIONALL
SELECT'华东','山东','青岛','18020133',6UNIONALL
SELECT'华北','北京','北京','7193',2UNIONALL
SELECT'华东','甘肃','兰州','7364',3UNIONALL
SELECT'华东','湖北','武汉','7512',7UNIONALL
SELECT'华东','湖北','武汉','7512',2UNIONALL
SELECT'华东','江苏','常州','7582',5UNIONALL
SELECT'华东','江苏','淮安','7670',7;
SELECT
IFNULL(A.`C1`,B.`C1`)AS`区域`,
IFNULL(A.`C2`,B.`C2`)AS`省份`,
IFNULL(A.`C3`,B.`C3`)AS`城市`,
IFNULL(A.`C4`,B.`C4`)AS`编码`,
SUM(A.`C5`)AS`表A销量`,
SUM(B.`C5`)AS`表B销量`
ALEFTJOINB
A.`C1`=B.`C1`AND
A.`C2`=B.`C2`AND
A.`C3`=B.`C3`AND
A.`C4`=B.`C4`
GROUPBY
IFNULL(A.`C1`,B.`C1`),
IFNULL(A.`C2`,B.`C2`),
IFNULL(A.`C3`,B.`C3`),
IFNULL(A.`C4`,B.`C4`)
UNION
SELECT
IFNULL(A.`C1`,B.`C1`)AS`区域`,
IFNULL(A.`C2`,B.`C2`)AS`省份`,
IFNULL(A.`C3`,B.`C3`)AS`城市`,
IFNULL(A.`C4`,B.`C4`)AS`编码`,
SUM(A.`C5`)AS`表A销量`,
SUM(B.`C5`)AS`表B销量`
ARIGHTJOINB
A.`C1`=B.`C1`AND
A.`C2`=B.`C2`AND
A.`C3`=B.`C3`AND
A.`C4`=B.`C4`
GROUPBY
IFNULL(A.`C1`,B.`C1`),
IFNULL(A.`C2`,B.`C2`),
IFNULL(A.`C3`,B.`C3`),
IFNULL(A.`C4`,B.`C4`);
+------+------+------+----------+---------+---------+
|区域|省份|城市|编码|表A销量|表B销量|
+------+------+------+----------+---------+---------+
|华北|辽宁|沈阳|20020202|2|5|
|华北|北京|北京|7193|7|2|
|华北|北京|北京|8358|5|NULL|
|华北|北京|北京|9773|8|NULL|
|华东|山东|青岛|18020133|8|12|
|华东|甘肃|兰州|7364|NULL|3|
|华东|湖北|武汉|7512|NULL|9|
|华东|江苏|常州|7582|NULL|5|
|华东|江苏|淮安|7670|NULL|7|
+------+------+------+----------+---------+---------+
9rowsinset(0.00sec)
更多追问追答
为什么华东|山东|青岛|18020133|8|12|这条中的表B不是而是12
执行的结果存在问题,首先表A有二条编码18020133相同的,表B只有一条编码18020133的记录,那么执行的结果就成了表A二条之和,表B一条的2倍了,反之是一样的。所以上面的语句得到的结果是错误的。
恩,我原先的逻辑,是先关联,后合计,现在看来有些问题.需要修改一下:
修改为先合计,后关联.
SELECT
IFNULL(A.`C1`,B.`C1`)AS`区域`,
IFNULL(A.`C2`,B.`C2`)AS`省份`,
IFNULL(A.`C3`,B.`C3`)AS`城市`,
IFNULL(A.`C4`,B.`C4`)AS`编码`,
IFNULL(A.`C5`,0)AS`表A销量`,
IFNULL(B.`C5`,0)AS`表B销量`
(SELECTC1,C2,C3,C4,SUM(C5)ASC5FROMAGROUPBYC1,C2,C3,C4)A
LEFTJOIN(SELECTC1,C2,C3,C4,SUM(C5)ASC5FROMBGROUPBYC1,C2,C3,C4)B
A.`C1`=B.`C1`AND
A.`C2`=B.`C2`AND
A.`C3`=B.`C3`AND
A.`C4`=B.`C4`
UNION
SELECT
IFNULL(A.`C1`,B.`C1`)AS`区域`,
IFNULL(A.`C2`,B.`C2`)AS`省份`,
IFNULL(A.`C3`,B.`C3`)AS`城市`,
IFNULL(A.`C4`,B.`C4`)AS`编码`,
IFNULL(A.`C5`,0)AS`表A销量`,
IFNULL(B.`C5`,0)AS`表B销量`
(SELECTC1,C2,C3,C4,SUM(C5)ASC5FROMAGROUPBYC1,C2,C3,C4)A
RIGHTJOIN(SELECTC1,C2,C3,C4,SUM(C5)ASC5FROMBGROUPBYC1,C2,C3,C4)B
A.`C1`=B.`C1`AND
A.`C2`=B.`C2`AND
A.`C3`=B.`C3`AND
A.`C4`=B.`C4`
+------+------+------+----------+---------+---------+
|区域|省份|城市|编码|表A销量|表B销量|
+------+------+------+----------+---------+---------+
|华北|辽宁|沈阳|20020202|2|5|
|华北|北京|北京|7193|7|2|
|华北|北京|北京|8358|5|0|
|华北|北京|北京|9773|8|0|
|华东|山东|青岛|18020133|8|6|
|华东|甘肃|兰州|7364|0|3|
|华东|湖北|武汉|7512|0|9|
|华东|江苏|常州|7582|0|5|
|华东|江苏|淮安|7670|0|7|
+------+------+------+----------+---------+---------+
9rowsinset(0.00sec)
还有比如:
蓝JV255
S3250
钢T305
金T305
金T205
金JV255
金JV205
红Z909
JA205
HB120
请问如何让字段a=字段b,因为字段a中存在汉字。我写成select*froma,bwherea.a=b.borsubstring(a.a,2)=b.b,但如果字段a中有多个汉字就行不通了
select*froma,bwherea.aLIKECONCAT('%',b.b)
看看行不行?
这个我没测试.
本回答由提问者推荐
select * from (select * from A union select * from B) as c order by time desc;
我也差敬业福,好多人都差敬业福 。
1、首先打开计算机,在计算机内打开CAD,然后在CAD界面内打开【选择样板】载入acad3D.dwt文件,并设置好视角。
2、然后通过菜单栏选择【常用】》【建模】》【圆柱体】选项。
3、绘制两个相互叠加的圆柱。
4、接着依次选择【常用】》【实体编辑】》【差集】选项。
5、通过鼠标左键在绘图区选择要从中减去的实体对象,底部大圆盘中减去圆柱。
选择好后再选择要减去的对象(长圆柱),再按下回车即可。
我这么理解的你看是不是这个意思。
两表数据也都是一样的,主要看剩下的那200条
select * from tab1 where id not in (select id from tab2)select a.id,b.id,a.name,b.name
from 表1 a,表2 b inner join on a.id=b.id
CREATE TABLE A (
`C1` VARCHAR(10),
`C2` VARCHAR(10),
`C3` VARCHAR(10),
`C4` VARCHAR(10),
`C5` INT
INSERT INTO A
SELECT '华北', '辽宁', '沈阳', '20020202', 2 UNION ALL
SELECT '华东', '山东', '青岛', '18020133', 3 UNION ALL
SELECT '华北', '北京', '北京', '7193', 7UNION ALL
SELECT '华北', '北京', '北京', '8358', 5UNION ALL
SELECT '华北', '北京', '北京', '9773', 8UNION ALL
SELECT '华东', '山东', '青岛', '18020133', 5 ;
CREATE TABLE B (
`C1` VARCHAR(10),
`C2` VARCHAR(10),
`C3` VARCHAR(10),
`C4` VARCHAR(10),
`C5` INT
INSERT INTO B
SELECT '华北', '辽宁', '沈阳', '20020202', 5 UNION ALL
SELECT '华东', '山东', '青岛', '18020133', 6 UNION ALL
SELECT '华北', '北京', '北京', '7193', 2UNION ALL
SELECT '华东', '甘肃', '兰州', '7364', 3UNION ALL
SELECT '华东', '湖北', '武汉', '7512', 7UNION ALL
SELECT '华东', '湖北', '武汉', '7512', 2UNION ALL
SELECT '华东', '江苏', '常州', '7582', 5UNION ALL
SELECT '华东', '江苏', '淮安', '7670', 7;
SELECT
IFNULL(A.`C1`, B.`C1`) AS `区域`,
IFNULL(A.`C2`, B.`C2`) AS `省份`,
IFNULL(A.`C3`, B.`C3`) AS `城市`,
IFNULL(A.`C4`, B.`C4`) AS `编码`,
SUM(A.`C5`) AS `表A销量`,
SUM(B.`C5`) AS `表B销量`
A LEFT JOIN B
ON (
A.`C1` = B.`C1` AND
A.`C2` = B.`C2` AND
A.`C3` = B.`C3` AND
A.`C4` = B.`C4`
)
GROUP BY
IFNULL(A.`C1`, B.`C1`),
IFNULL(A.`C2`, B.`C2`),
IFNULL(A.`C3`, B.`C3`),
IFNULL(A.`C4`, B.`C4`)
UNION
SELECT
IFNULL(A.`C1`, B.`C1`) AS `区域`,
IFNULL(A.`C2`, B.`C2`) AS `省份`,
IFNULL(A.`C3`, B.`C3`) AS `城市`,
IFNULL(A.`C4`, B.`C4`) AS `编码`,
SUM(A.`C5`) AS `表A销量`,
SUM(B.`C5`) AS `表B销量`
A RIGHT JOIN B
ON (
A.`C1` = B.`C1` AND
A.`C2` = B.`C2` AND
A.`C3` = B.`C3` AND
A.`C4` = B.`C4`
)
GROUP BY
IFNULL(A.`C1`, B.`C1`),
IFNULL(A.`C2`, B.`C2`),
IFNULL(A.`C3`, B.`C3`),
IFNULL(A.`C4`, B.`C4`);
+------+------+------+----------+---------+---------+
| 区域 | 省份 | 城市 | 编码| 表A销量 | 表B销量 |
+------+------+------+----------+---------+---------+
| 华北 | 辽宁 | 沈阳 | 20020202 |2 |5 |
| 华北 | 北京 | 北京 | 7193|7 |2 |
| 华北 | 北京 | 北京 | 8358|5 |NULL |
| 华北 | 北京 | 北京 | 9773|8 |NULL |
| 华东 | 山东 | 青岛 | 18020133 |8 |12 |
| 华东 | 甘肃 | 兰州 | 7364|NULL |3 |
| 华东 | 湖北 | 武汉 | 7512|NULL |9 |
| 华东 | 江苏 | 常州 | 7582|NULL |5 |
| 华东 | 江苏 | 淮安 | 7670|NULL |7 |
+------+------+------+----------+---------+---------+
9 rows in set (0.00 sec)select a.*, b.销量 from a left join b on a.编码 = b.编码
union all
select b.区域, b.省份, b.城市, b.编码, a.销量, b.销量
from a right join b on a.编码 = b.编码
本文发布于:2024-02-01 08:31:17,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170674747735265.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |