我想在 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(这也将是该产品的最低价格)。并非所有产品的 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。通过加入两者,您将得到想要的。
关于mysql - mysql select 语句中的回退条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16513226/