第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

FIND_IN_SET 通用符號?

FIND_IN_SET 通用符號?

PHP
暮色呼如 2023-11-03 20:07:55
我想創(chuàng)建這樣的查詢:$get_products = "SELECT P.*, C.`category_name`, GROUP_CONCAT(`category_name` SEPARATOR ', ') AS `cat`                    FROM `products` P                    NATURAL JOIN                      `categories` C                    NATURAL JOIN                      `product_to_categories`";                   WHERE                      FIND_IN_SET(`category_name`, :selected_categories)                      AND `product_price` BETWEEN :price_min AND :price_max                   GROUP BY `product_name`                   ORDER BY 1 DESC ";               $db = getConnection();$stmt = $db->prepare($get_products);$stmt -> bindValue(selected_categories, $selected_categories);$stmt -> bindValue(price_min, $price_min);$stmt -> bindValue(price_max, $price_max);問題是字符串$selected_categories在某些情況下是空的,當它為空時顯然什么也找不到。是否有任何我可以使用的參數(shù)(例如$selected_categories = '*';)并且它會導致 FIND_IN_SET 找到所有內容?或者我應該為$selected_categories為空的情況創(chuàng)建全新的查詢?
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

您可以使用一個變量兩次引用相同的替換參數(shù):


 WHERE IF((@selected_categories:=:selected_categories)='*',1,FIND_IN_SET(category_name,@selected_categories))

并測試一些您想要表示全部的值(在本例中為“*”,您可以使用 ='' 或 IS NULL 或其他值)。


有些人更喜歡使用 SQL 標準 CASE 而不是 IF;看起來像:


WHERE

    CASE

        WHEN (@selected_categories := :selected_categories) = '*' THEN 1

        ELSE FIND_IN_SET(category_name, @selected_categories)

    END


查看完整回答
反對 回復 2023-11-03
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

你可以用簡單的邏輯來解決這個問題


WHERE 

(

   :selected_categories = '*' OR

   FIND_IN_SET(`category_name`, :selected_categories) 

)

AND `product_price` BETWEEN :price_min AND :price_max 


查看完整回答
反對 回復 2023-11-03
  • 2 回答
  • 0 關注
  • 168 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號