with tmp_a as
(select '10' as code, '北京' as name, '908' as kyll from dual),
tmp_b as
(select '10' as code, '北京' as name, '780' as kyll
from dual
union all
select '11', '河北' as name, '781'
from dual)
select code, name, max(kyll) as kyll
from (select * from tmp_a union all select * from tmp_b) mt
group by code, name;
uj5u.com熱心網友回復:
join 版本,可能需要根據你的實際需求微調
with tmp_a as
(select '10' as code, '北京' as name, '908' as kyll from dual),
tmp_b as
(select '10' as code, '北京' as name, '780' as kyll
from dual
union all
select '11', '河北' as name, '781'
from dual)
select ifNULL(tmp_a.code, tmp_b.code) as code,
ifNULL(tmp_a.name, tmp_b.name) as name,
ifNULL(tmp_a.kyll, tmp_b.kyll) as kyll
from tmp_a
left join tmp_b
on tmp_a.code = tmp_b.code
union
select ifNULL(tmp_a.code, tmp_b.code) as code,
ifNULL(tmp_a.name, tmp_b.name) as name,
ifNULL(tmp_a.kyll, tmp_b.kyll) as kyll
from tmp_a
RIGHT join tmp_b
on tmp_a.code = tmp_b.code
uj5u.com熱心網友回復:
with tmp_a as
(select '10' code, '北京' name, '908' kyll from dual),
tmp_b as
(select '10' code, '北京' name, '780' khll from dual
union all
select '11' code, '河北' name, '781' khll from dual)
select tmp_b.*,ifnull(tmp_a.kyll,0) kyll from tmp_b left join tmp_a on tmp_a.code = tmp_b.code ;
uj5u.com熱心網友回復:
你怎么知道是哪個表資料多,哪個資料少啊?
uj5u.com熱心網友回復:
select * from (select b.*,@rn:=@rn+1 r1 from (select b.* from b,(select @rn:=0 r1 ) b1 order by code)b)b1 left join ( select b.*,@rn:=@rn+1 r1 from (select a.* from a,(select @rn:=0 r) a1 order by code)b)a1 on a1.r1=b1.r1;
uj5u.com熱心網友回復:
單從表的內容上看,應該已B表為主表left joinA表,coalesce(HYLL,0)
uj5u.com熱心網友回復:
額,被誤導了,這個板塊是MYSQL的,MYSQL是不支持WITH的。
看樓主給的測驗資料,是B表比A表資料多,我改了一下,這樣應該可以。
SELECT
code,
name,
MAX(khll) khll,
MAX(kyll) kyll
FROM
(
SELECT
code,
name,
NULL khll,
kyll
FROM
a
UNION ALL
SELECT
code,
name,
khll,
NULL kyll
FROM
b
)
GROUP BY
code,
name
ORDER BY code,name;
uj5u.com熱心網友回復:
mysql 8.0以后會支持with和分析函式
你怎么知道是哪個表資料多,哪個資料少啊?
with tmp_a as
(select '10' code, '北京' name, '908' kyll from dual),
tmp_b as
(select '10' code, '北京' name, '780' khll from dual
union all
select '11' code, '河北' name, '781' khll from dual)
select tmp_b.*,ifnull(tmp_a.kyll,0) kyll from tmp_b left join tmp_a on tmp_a.code = tmp_b.code ;
額,被誤導了,這個板塊是MYSQL的,MYSQL是不支持WITH的。
看樓主給的測驗資料,是B表比A表資料多,我改了一下,這樣應該可以。
SELECT
code,
name,
MAX(khll) khll,
MAX(kyll) kyll
FROM
(
SELECT
code,
name,
NULL khll,
kyll
FROM
a
UNION ALL
SELECT
code,
name,
khll,
NULL kyll
FROM
b
)
GROUP BY
code,
name
ORDER BY code,name;
**桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......
我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......
關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......