親愛的IT神人,小弟自學只會很基礎的SQL 語法,目前遇到以下難題
一筆資料訂單
另一筆是比對用表格,我希望能透過SQL 資料比對

透過比對表 來找出 訂單報表中最右邊那欄的結果
主要是各欄位都有些不規則
之前在Excel是用布林值比對一列一列往下比對所有項目都符合
目前轉移到SQL我是本來是使用Like+'%'的查找方式搭配Left Join
目前是用
From 訂單報表 left join 比對表
On ID包含 like %ID%
and ID排除 not like %ID%
但是ID 包含的"全"ID不知道該怎麼處理
謝謝
感覺你是想要下面這樣?
From 訂單報表 left join 比對表
On (ID包含 like %ID% or ID包含 = "全")
and ID排除 not like %ID%
如果可以給完整一點的SQL(like那段),可能會更看得懂一點
WITH RECURSIVE numbers AS (
    SELECT 1 AS n
    UNION ALL
    SELECT n + 1
    FROM numbers
    WHERE n <= 10
)
SELECT 
    訂單報表.ID AS 訂單ID,
    訂單報表.參數,
    訂單報表.比對結果,
    比對表.ID包含,
    比對表.比對合併,
    比對表.參數名稱
FROM 
    比對表
LEFT JOIN 
    訂單報表
ON 
    (
        比對表.ID包含 = '全' OR 
        EXISTS (
            SELECT 1
            FROM (
                SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(比對表.ID包含, ':', n), ':', -1)) AS single_id
                FROM numbers
            ) AS split_ids
            WHERE 訂單報表.ID LIKE CONCAT('%', split_ids.single_id, '%')
        )
    )
    AND 
    (比對表.ID排除 IS NULL OR 訂單報表.ID NOT LIKE CONCAT('%', 比對表.ID排除, '%'));
你說的是這樣嗎?