我想在mysql语句中加入一个条件。如果有可能的话?
这是我当前的mysql select语句

SELECT *
      FROM `validproduct`
      WHERE `visible` = 1
      AND `typeid` = 2
      AND `sizeid` = 3
      GROUP BY `productid`

所以目前,我正在选择sizeid=3的产品。我要做的是选择size=1的产品,如果不存在,则选择sizeid=3。
我的validproducts表包含一个产品列表,其中最多有6个与之相关的不同大小的产品(这些产品又有不同的定价)。我想退回我所有的产品,用最低的尺寸(也将有最低的价格为该产品)。并非所有产品都有SizeID 1。
因此,我的返回数据将类似于产品A(sizeid 1,$x);产品B(sizeid 3,$y)等

最佳答案

有一种方法:

SELECT
  vp1.*
FROM
  validproduct vp1
INNER JOIN
  (
    SELECT
      productid, MIN(sizeid) as minsize
    FROM
      validproduct
    WHERE
      visible = TRUE AND
      typeid = 2
    GROUP BY
    productid
  ) AS vp2
ON
  vp1.productid = vp2.productid AND
  vp1.sizeid = vp2.minsize AND
  vp1.visible = TRUE AND
  vp1.typeid = 2
GROUP BY
  vp1.productid;

说明:
外部查询实际上就是您已经拥有的。内部子查询查找每个产品的最小sizeid。加入这两个组织你就能得到你想要的。
PLZ SEE THE FIDDLE

关于mysql - mysql select语句中的回退条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16513226/

10-10 09:05