【问题标题】:how to use a condition in mysql stored procedure如何在mysql存储过程中使用条件
【发布时间】:2016-06-27 17:34:27
【问题描述】:

我想编写一个 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

【问题讨论】:

    标签: php mysql sql select stored-procedures


    【解决方案1】:

    您可以使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 2020-06-15
      相关资源
      最近更新 更多