簡體   English   中英

比較具有不同值的兩個表

[英]Comparing two tables with different values

我在同一服務器上的不同數據庫中有兩個表......在 SQL 中有多個列。

我需要獲取我使用的列之一的值出現在 TableA 中而不是在 TableB 中的記錄。 此列在 TableA 中是字母數字 (BIGINT),而在 TableB 中是不同的,它是 ShortDescription(varchar(100))

TableB 列的值僅是與 Table A 列相同但沒有字符(例如 123)的數字,而 TableA 列值可以包含例如“ab123”

現在,如果表 A 中的值“abc123”出現在表 A 中,而值“123”不在表 B 中,那么我應該從表 A 中獲取該記錄。如果表 B 中的該列存在 123,那么我不應該拿來。

怎么做?

試試這個查詢。 通過連接兩個表,然后使用WHERE子句,它使事情變得簡單。 我將只調用兩個表之間的公共列“Id”來進行連接:

SELECT * FROM TableA 
LEFT JOIN TableB ON TableA.Id = TableB.Id 
WHERE TableA.Column1 = "ab123" AND TableB.ShortDescription != "123";

您需要 PATINDEX 從 TableA.Column1 中查找數字,然后將其與 TableB.Column2 匹配。 以下為您查詢:

Select 列 1 從表 A 中存在(從表 B 中選擇 1,其中子字符串(CAST(列 1 作為 VARCHAR),PATINDEX('%[0-9]%',CAST(列 1 作為 VARCHAR)),LEN(列 1))=列 2)

我假設您在兩個表之間沒有公共列。 否則,您可以使用公共列連接並將 PATINDEX 語句放在 WHERE 子句中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM