我有一個表“TableA”,如:
ID Group Type
1 AB SomeValue
2 BC SomeValue
另一個表 'TableB' 像:
Product Subgroup Type
A XX-AB-XX-text SomeValue
B XX-BC-XY-text SomeValue
我在兩個表之間使用 INNER JOIN,例如:
SELECT DISTINCT ID
FROM TableA TA
INNER JOIN TableB TB
ON TA.Type=TB.Type
我想為加入添加另一個條件,它在“子組”中查找“組”的值,并且僅當“組”值在“XX-”之后和“-XX”之前匹配時才加入。
換句話說,僅當“AB”組出現在“子組”列中的正確位置時才加入。
我怎樣才能做到這一點?我正在使用 MSSQL
uj5u.com熱心網友回復:
嘗試這個:
SELECT (DISTINCT ID)
FROM TableA TA
INNER JOIN TableB TB
ON TA.Type=TB.Type AND TB.SubGroup LIKE '__-' TA.Group '%'
uj5u.com熱心網友回復:
您可以將 LIKE 與 CONCAT 一起使用來構建運算式,請參閱此小提琴:
https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=d7bb4781488e53c31abce0f38d0aaef4
SELECT *
FROM TableA TA
JOIN TableB TB on (
TA.types = TB.types AND
TB.subgroup LIKE concat('XX-', TA.groups, '-XX%')
);
我正在轉儲所有回傳的資料,以便您可以看到它,但您希望修改它以僅回傳 DISTINCT TA.id。
可以使用 而不是 CONCAT 來構建運算式:
'XX-' TA.groups '-XX%'
另外,我強烈警告您不要使用保留字的列名。GROUP 和 TYPE 都被 SQL 引擎使用,因此要使用它們,您必須每次都將它們轉義,并且它們還可能導致任何閱讀或維護您的代碼的人感到困惑。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/366927.html
標籤:sql sql-server
