mysql - mysql select 语句中的回退条件

标签 mysql

我想在 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。通过加入两者,您将得到想要的。

PLZ SEE THE FIDDLE

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

相关文章:

php - 上传多张图片到数据库MYSQLI

php - 如何在 Laravel 5.1 中获取数据库中的表列表

javascript - 自动刷新表 PHP JavaScript/jQuery

MYSQL删除重复超过 'x'的记录

php - 将 MySQL 连接转换为 JSON 数组

mysql - 将 codeigniter mysql 日期时间列设置为 time() 始终将其设置为 0

mysql - Intellij IDEA ColdFusion SQL 自动完成

php - Symfony2 表单集合外键

php - 如何使用 MySQL 在单个查询中运行两个不同的查询?

php - 对 php 中的 mysql 事务感到困惑