MySQL在where后面使用case when

数据表里有 特价 special_price 和 原价 price 字段
需求是 有特价查询特价,没有特价就查询价格

假如表数据如下

字段名类型说明
idpricespecial_price
1100.0090.00
2200.0090.00
3300.00270.00

运行这个查询语句

SELECT
    *
FROM
    `goods`
WHERE
    (
        CASE
        WHEN special_price > 0 THEN
            special_price
        ELSE
            price
        END
    ) > 100

查询结果会得到 id3 的数据,因为 SQL 优先查询特价字段

假如表数据如下

字段名类型说明
idpricespecial_price
1100.00
2200.00
3300.00

再次运行这个查询语句,查询结果会得到 id2,3 的数据,因为没有特价就查询价格字段

MySql

我来吐槽

*

*

已有 11 条评论

  1. 张波博客

    这款主题是你开发的吗?共享吗?

    1. Hoe

      是的,共享🙂

  2. 孟超

    老哥的网站真心不错,我这个小菜鸡能不能和您互换友链啊🙄。我先添加上您。

    1. Hoe

      友链已加🙂

  3. cordimax

    博主您好,主题设计的不错。能否增加个一键分享文章功能,涉及qq微信微博等,另外增加个打赏开启的功能

    1. Hoe

      很不错的想法👍

      1. cordimax

        最近在文章内加入音乐时,遇到个问题,由于域名第一层套了一个框架,导致需要右键重新加载框架才能显示播放器组件

      2. cordimax

        https://github.com/overtrue/share.js
        这个项目是关于https下的一键分享。感兴趣的话博主参阅一下。打赏功能目前是在post.php加了一段代码。

        1. 若涵

          感谢博主分享

  4. 找果树

    谢谢分享 ,会一直关注博主的,内容很赞

  5. repostone

    非技术的路过。