2010-02-27 155 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