MySQL,使用另一个表中的列作为CASE语句

时间:2014-02-26 18:41:15

标签: mysql

我有两个表,一个 Items 表,如下所示:


Item       Count
-----------------
1          20
2          24
3          49

一个名为 ItemsConfig 的表格如下所示:


ItemsConfig

ItemCountLow    ItemCountHigh    ItemCountStatus
------------------------------------------------
0               20               Low
21              50               Normal
51              100              Surplus

我想要做的是构建一个查询,使用 ItemsConfig <中的ItemCountLowItemCountHigh阈值来比较表中的项目计数/ strong> table,派生 ItemCountStatus

以下是每个表的创建语句

项目表

CREATE TABLE IF NOT EXISTS `Items` (
  `Item` int(11) NOT NULL,
  `Count` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `Items`
--

INSERT INTO `Items` (`Item`, `Count`) VALUES
(1, 20),
(2, 24),
(3, 49);

ItemsConfig表

CREATE TABLE IF NOT EXISTS `ItemsConfig` (
  `ItemCountLow` int(11) NOT NULL,
  `ItemCountHigh` int(11) NOT NULL,
  `ItemCountStatus` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `ItemsConfig`
--

INSERT INTO `ItemsConfig` (`ItemCountLow`, `ItemCountHigh`, `ItemCountStatus`) VALUES
(0, 20, 'Low'),
(21, 50, 'Normal'),
(51, 100, 'Surplus');

我正在尝试做这样的事情,但似乎无法弄明白。

SELECT item, count, 
CASE
    WHEN count > ItemsConfig.ItemCountLow AND count < ItemsConfig.ItemCountHigh  
        THEN ItemsConfig.ItemCountStatus
END as 'status'
FROM Items

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

怎么样:

SELECT i.item, i.count, ifnull(ic.ItemCountStatus,'Unknown') status
FROM items i
LEFT JOIN ItemsConfig ic on (i.count between ic.ItemCountLow  AND ic.ItemCountHigh)