[英]how to use a condition in mysql stored procedure
我想編寫一個 MySQL 存儲過程並給出 4 個變量 _keyword 、 _catid 、_low 和 high 然后如果 _catid 不是空過濾結果,其中 category_id 列等於 _catid 並且如果它(_catid)是空的,請執行以下操作:
CREATE DEFINER = `root`@`localhost` PROCEDURE `sp_company_search` (
IN `_catid` INT,
IN `_keyword` VARCHAR (200) CHARSET utf8,
IN `_low` INT,
IN `_high` INT
) NO SQL SELECT
i.images_id,
c. NAME,
c.address,
c.id,
cat.title,
c.extra
FROM
company c
LEFT JOIN category cat ON c.category_id = cat.id
LEFT JOIN company_images i ON c.id = i.company_id
WHERE
(
c. NAME LIKE _keyword
OR c.extra LIKE _keyword
)
-- what i need TO DO:
-- IF (_catid != '') THEN { put "and c.category_id=_catid" IN QUERY }
ORDER BY
c.id DESC
LIMIT _low, _high
您可以使用or
邏輯運算符模擬此行為:
SELECT
i.images_id,
c. NAME,
c.address,
c.id,
cat.title,
c.extra
FROM
company c
LEFT JOIN category cat ON c.category_id = cat.id
LEFT JOIN company_images i ON c.id = i.company_id
WHERE
(
c. NAME LIKE _keyword
OR c.extra LIKE _keyword
) AND
(_catid = '' OR c.category_id=_catid)
ORDER BY
c.id DESC
LIMIT _low, _high
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.