2010-02-27 94 views
1

我有一个以下MySQL有两个参数,$ catname和$ limit = 1。 它工作正常。如何在SQL中添加if语句?

SELECT P.*, C.Name AS CatName 
        FROM omc_product AS P 
        LEFT JOIN omc_category AS C 
        ON C.id = P.category_id 
        WHERE C.Name = '$catname' 
        AND p.status = 'active' 
        ORDER BY RAND() 
        LIMIT 0, $limit 

现在我想添加另一个参数$ order。 $顺序可以是

ODER BY RAND()

ORDER BY在表omc_product product_order

请问谁能告诉我如何写这个查询?

在此先感谢。

+0

什么标准选择一个在另一个之上? O,和:这是否与PHP有关?那么你应该相应标记它。 – 2010-02-27 15:28:50

回答

1

从意见采取this的MySQL 5.0参考文章:

您可以ORDER BYSELECT语句的ORDER BY子句中使用CASE表达动态列名参数:

CREATE PROCEDURE `orderby`(IN _orderby VARCHAR(50)) 
BEGIN 

    SELECT id, first_name, last_name, birthday 
    FROM table 
    ORDER BY 

    -- numeric columns 
    CASE _orderby WHEN 'id' THEN id END ASC, 
    CASE _orderby WHEN 'desc_ id' THEN id END DESC, 
    -- string columns 
    CASE _orderby WHEN 'first_name' THEN first_name WHEN 'last_name' THEN last_name END ASC, 
    CASE _orderby WHEN 'desc_first_name' THEN first_name WHEN 'desc_last_name' THEN last_name END DESC, 
    -- datetime columns 
    CASE _orderby WHEN 'birthday' THEN birthday END ASC, 
    CASE _orderby WHEN 'desc_ birthday' THEN birthday END DESC; 

END