我有2個表TblA
和TblB
。 TblA
的列有A B C ...Z
和TblB
也有A B C D...Z
列。我想要列的名稱,其中TblA
和TblB
數據因特定行而異。假設column A
是primary key
並且永不改變,即,可以在column A
上執行join
。在2個相似的表中比較2行並只返回不同值的列名
0
A
回答
3
可悲的是,在比較版本/默認/歷史記錄表到另一個的時候,有沒有更好的辦法柱做的比列的查詢
select
case when a.B!=b.B then 'B' else null end,
case when a.C!=b.C then 'C' else null end,
....(repeat for each column)
from tbla a
left join tblb b
on a.A=b.A
請記住,如果列可以包含空,null=anything is null
(不是真或假),所以你可能需要包裝ifnull()中的每一列來比較
0
編輯:我沒有在這裏處理過空值。你可以使用一個函數來處理你的數據庫。
這是3列的示例查詢。您可以將其擴展到其他列。
with s1 (A ,B ,C) as
(select 1,22,23 from dual union
select 2,45,47 from dual union
select 3,66, 68 from dual
),
t1 (A ,B ,C) as
(select 1,23,24 from dual union
select 2,45,47 from dual union
select 3,66, 69 from dual
),
chng as(
select s1.*, case when s1.B = t1.B then '' else 'B' end as B1 , case when s1.C = t1.C then '' else 'C' end as C1
from s1 ,t1
where s1.A = t1.A
)
,chkChange as(
select a, (B1||C1) as Changes from chng
)
select * from chkChange
where changes is not null
+0
Mysql不支持WITH。 – AdrianBR
相關問題
- 1. 如何比較兩個結構相似的表並只返回SQL Server中不同值的列名和值?
- 2. 比較2個表格的值並列出不同的行
- 3. 比較2個陣列的相似度
- 4. 比較2個通用列表並返回列表b中的缺失值
- 5. 比較不同表格中的2行並更新(如果相似)
- 6. 比較2所列出並返回指數值第三列表
- 7. 比較不同表中的2列mysql
- 8. 比較2個相同的MySQL表
- 9. 比較來自不同表格的2列並返回第二個表格的不同值
- 10. 比較的2個不同的行2列的不同在Oracle 11g中
- 11. 比較兩個列表,並返回不同的值,差異
- 12. 比較datagridview中的2個不同列
- 13. 比較2個表,並讓行,其中計數是相同
- 14. 比較2個不同工作表中的2個不同的行 - Excel
- 15. 命令相同不返回比較的日期Swift 2
- 16. Python - 比較2個相同的對象返回False?
- 17. 比較2個完全相同的字符串返回false
- 18. 比較三個不同的值並相應地返回true false?
- 19. 比較2個不同Excel表格上的2列
- 20. 比較MS SQL中的2行並得到不同的列
- 21. SQLite比較2列並修改相同的行?
- 22. 如何在2只列出比較值
- 23. 如何比較2個表中每行的2個值?
- 24. 比較2個數組並找到與Ramda相同的值
- 25. 比較來自2個不同數據庫的2個不同數據表列
- 26. 紅寶石散列比較值,並返回相同的結構
- 27. MySQL的比較2個表中的值
- 28. 比較2個陣列中存在相同的多維數組
- 29. 在2檔比較特定的列並返回普通(UNIX)
- 30. 比較2個工作表中的行並更新特定列
但是,爲什麼你有兩張具有相同佈局和幾乎相同數據的表? – jarlh
,因爲一個表存儲更新的數據,另一個表存儲其先前的值。 – Ankita
列數真的很高(20+)嗎?你可以發佈結果應該是什麼樣子?你真的只想要列名嗎? –