AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 271005
Accepted
Lynn
Lynn
Asked: 2020-07-16 07:51:43 +0800 CST2020-07-16 07:51:43 +0800 CST 2020-07-16 07:51:43 +0800 CST

SQL CASE 查询优先级

  • 772

我正在做一个 pokemon sql 表并创建了一个名为 capacity_difference 的新列来确定表中每个 pokemon 的可收集性。但是,当我想使用 CASE 查询对它们进行分类时,结果只显示每个日志的 ELSE 条件。有人可以告诉我如何修复查询吗?

我的查询如下:

ALTER TABLE pokemon add capacity_difference INTEGER;

SELECT name, type_1, type_2, HP, (attack - defense) as capacity_difference from pokemon; 

SELECT name, type_1, type_2, HP, (attack - defense) as capacity_difference, 
  CASE 
    when capacity_difference > 90 then "collect asap"
    when  capacity_difference < 90 and capacity_difference > 50 then "good"
    when capacity_difference > 0 and capacity_difference < 50 then "okay"
    when capacity_difference > -10 and capacity_difference < 0 then "bad"
  ELSE "worse"
  END AS Collectability
FROM pokemon;
query syntax
  • 2 2 个回答
  • 51 Views

2 个回答

  • Voted
  1. Best Answer
    Lennart - Slava Ukraini
    2020-07-16T08:07:47+08:002020-07-16T08:07:47+08:00

    问题是在评估您的案例表达式时,不知道重命名((攻击 - 防御)为 capacity_difference )。即您的案例表达式正在评估capacity_difference您尚未分配值的列。我建议您摆脱该列,并执行以下操作:

    SELECT name
         , type_1
         , type_2
         , HP
         , CASE when capacity_difference > 90 
                then "collect asap" 
                when capacity_difference < 90 and capacity_difference > 50 
                then "good" 
                when capacity_difference > 0 and capacity_difference < 50 
                then "okay" 
                when capacity_difference > -10 and capacity_difference < 0 
                then "bad" 
                ELSE "worse" 
           END AS Collectability 
    FROM (
        SELECT (attack - defense) as capacity_difference
             ,  name
             , type_1
             , type_2
             , HP
        FROM pokemon
    ) AS t;
    
    • 0
  2. nbk
    2020-07-16T08:11:24+08:002020-07-16T08:11:24+08:00

    使用 mysql 和 mariadb,你可以做到

    CrEATE Table pokemon (name VARCHAR(19), type_1 VARCHAR(19), type_2 VARCHAR(19), HP INT, attack INT, defense INT);
    
    INSERT INTO pokemon VALUES ('a','fire','water',20,4,2),('b','fire','water',20,67,2);
    
    SELECT name, type_1, type_2, HP, @capacity_diff := (attack - defense) as capacity_difference, 
      CASE 
        when @capacity_diff > 90 then "collect asap"
        when  @capacity_diff < 90 and @capacity_diff > 50 then "good"
        when @capacity_diff > 0 and @capacity_diff < 50 then "okay"
        when @capacity_diff > -10 and @capacity_diff < 0 then "bad"
      ELSE "worse"
      END AS Collectability
    FROM pokemon;
    
    姓名 | 类型_1 | 类型_2 | 惠普 | 容量差异 | 可收藏性
    :--- | :----- | :----- | -: | ------------------: | :-------------
    一个 | 火灾| 高分辨率照片| CLIPARTO 水| 20 | 2 | 好的          
    乙 | 火灾| 高分辨率照片| CLIPARTO 水| 20 | 65 | 好的          
    

    db<>在这里摆弄

    • 0

相关问题

  • 如何获取用户好友的姓名?

  • 两个相关表之间的查询

  • 日期对齐和对匹配提取最好用 TSQL 或 C# 完成?

  • LIKE 选择文字中任意位置独立存在的单词

  • SQL Server 2005:如何使用数据透视而不是一堆案例语句?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve