回答編集履歴
2
SQLのコメントを追記
    
        answer	
    CHANGED
    
    | @@ -10,6 +10,7 @@ | |
| 10 10 | 
             
            		  SRC.ID
         | 
| 11 11 | 
             
            	FROM tb_items SRC
         | 
| 12 12 | 
             
            	JOIN tb_filter_keyword FIL
         | 
| 13 | 
            +
            	/* フィルタで指定されたカラムにキーワードが含まれることのチェック */
         | 
| 13 14 | 
             
            	ON FIL.Type = 'Name' AND locate(FIL.Keyword, SRC.Name) > 0
         | 
| 14 15 | 
             
            	OR FIL.Type = 'Brand' AND locate(FIL.Keyword, SRC.Brand) > 0
         | 
| 15 16 | 
             
            	OR FIL.Type = 'Category' AND locate(FIL.keyword, SRC.Category) > 0
         | 
| @@ -28,19 +29,23 @@ | |
| 28 29 | 
             
            FROM (
         | 
| 29 30 | 
             
            	SELECT
         | 
| 30 31 | 
             
            		  ID
         | 
| 32 | 
            +
            		/* 最大値が0(フィルタにデータかかかっていない)場合にFALSE,それ以外はTRUEを設定 */
         | 
| 31 33 | 
             
            		, CASE WHEN MAX(TMP.INC) = 0 THEN FALSE ELSE TRUE END Status
         | 
| 32 34 | 
             
            	FROM (
         | 
| 33 35 | 
             
            		SELECT
         | 
| 34 36 | 
             
            			  ID
         | 
| 37 | 
            +
            			/* フィルタに引っかかったデータIDに1を設定 */
         | 
| 35 38 | 
             
            			, 1 INC
         | 
| 36 39 | 
             
            		FROM tb_items SRC
         | 
| 37 40 | 
             
            		JOIN tb_filter_keyword FIL
         | 
| 41 | 
            +
            		/* フィルタで指定されたカラムにキーワードが含まれることのチェック */
         | 
| 38 42 | 
             
            		ON FIL.Type = 'Name' AND locate(FIL.Keyword, SRC.Name) > 0
         | 
| 39 43 | 
             
            		OR FIL.Type = 'Brand' AND locate(FIL.Keyword, SRC.Brand) > 0
         | 
| 40 44 | 
             
            		OR FIL.Type = 'Category' AND locate(FIL.keyword, SRC.Category) > 0
         | 
| 41 45 | 
             
            		UNION ALL
         | 
| 42 46 | 
             
            		SELECT
         | 
| 43 47 | 
             
            			  ID
         | 
| 48 | 
            +
            			/* すべてのIDでデータが見つからない場合の初期値(0)を設定 */
         | 
| 44 49 | 
             
            			, 0 
         | 
| 45 50 | 
             
            		FROM tb_items
         | 
| 46 51 | 
             
            	) TMP
         | 
1
UPDATEを1回で行うSQLを追加
    
        answer	
    CHANGED
    
    | @@ -16,4 +16,37 @@ | |
| 16 16 | 
             
            ) TMP
         | 
| 17 17 | 
             
            WHERE ID = TMP.ID
         | 
| 18 18 |  | 
| 19 | 
            +
            ```
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            ---
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            UPDATE一回で済ませたいならこちら
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            ```SQL
         | 
| 26 | 
            +
            UPDATE tb_items
         | 
| 27 | 
            +
            	SET Status = TMP2.Status
         | 
| 28 | 
            +
            FROM (
         | 
| 29 | 
            +
            	SELECT
         | 
| 30 | 
            +
            		  ID
         | 
| 31 | 
            +
            		, CASE WHEN MAX(TMP.INC) = 0 THEN FALSE ELSE TRUE END Status
         | 
| 32 | 
            +
            	FROM (
         | 
| 33 | 
            +
            		SELECT
         | 
| 34 | 
            +
            			  ID
         | 
| 35 | 
            +
            			, 1 INC
         | 
| 36 | 
            +
            		FROM tb_items SRC
         | 
| 37 | 
            +
            		JOIN tb_filter_keyword FIL
         | 
| 38 | 
            +
            		ON FIL.Type = 'Name' AND locate(FIL.Keyword, SRC.Name) > 0
         | 
| 39 | 
            +
            		OR FIL.Type = 'Brand' AND locate(FIL.Keyword, SRC.Brand) > 0
         | 
| 40 | 
            +
            		OR FIL.Type = 'Category' AND locate(FIL.keyword, SRC.Category) > 0
         | 
| 41 | 
            +
            		UNION ALL
         | 
| 42 | 
            +
            		SELECT
         | 
| 43 | 
            +
            			  ID
         | 
| 44 | 
            +
            			, 0 
         | 
| 45 | 
            +
            		FROM tb_items
         | 
| 46 | 
            +
            	) TMP
         | 
| 47 | 
            +
            	GROUP BY
         | 
| 48 | 
            +
            		  ID
         | 
| 49 | 
            +
            ) TMP2
         | 
| 50 | 
            +
            WHERE ID = TMP2.ID
         | 
| 51 | 
            +
             | 
| 19 52 | 
             
            ```
         | 
