Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在SQL中添加if语句?_Mysql - Fatal编程技术网

Mysql 如何在SQL中添加if语句?

Mysql 如何在SQL中添加if语句?,mysql,Mysql,我有一个带有两个参数的MySQL,$catname和$limit=1。 它工作得很好 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'

我有一个带有两个参数的MySQL,$catname和$limit=1。 它工作得很好

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。 $order可以是

兰德订单()

按产品订货

在表omc_产品中

谁能告诉我怎么写这个查询


提前感谢。

摘自MySQL 5.0参考文章的评论:

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

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

摘自MySQL 5.0参考文章的评论:

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

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

选择一个高于另一个的标准是什么?O、 还有:这也与PHP有关吗?那么你应该给它贴上相应的标签。选择一个高于另一个的标准是什么?O、 还有:这也与PHP有关吗?你应该给它贴上相应的标签。