首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL,在使用GROUP和when时选择列值

MySQL,在使用GROUP和when时选择列值
EN

Stack Overflow用户
提问于 2012-05-01 13:13:41
回答 1查看 376关注 0票数 1

我希望为具有2个或更少属性的资产(在asset_id表中有2行或更少的行)选择category_namecategory_nameFixture ID。到目前为止,我只有asset_idcategory_name。并不是所有资产都存在Fixture ID。如果是这样的话,它将是与property_id 1同一行的property_id 1

期望结果示例

asset_property表:

代码语言:javascript
运行
复制
| asset_id | property_id | property_value |
|:--------:|:-----------:|:---------------|
| 100      | 1           | A-6            |*
| 100      | 6           | Blue           |
| 104      | 1           | CC-7           |*
| 104      | 6           | Blue           |
| 104      | 4           | 12"            |
| 105      | 1           | B-1            |*
| 108      | 1           | HR-1           |*
| 109      | 3           | 500            |
| 109      | 4           | 1"             |

*property_id 1是Fixture ID

预期结果:

代码语言:javascript
运行
复制
| asset_id | category_name | property_value*|
|:--------:|:-------------:|:---------------|
| 100      | Flooring      | A-6            |
| 104      | Flooring      | CC-7           |
| 105      | Kitchen Equip | B-1            |
| 108      | Plumbing      | HR-1           |
| 109      | Plumbing      |                |

*property_valueFixture ID,如果property_id1

到目前为止我的MYSQL

MySQL:

代码语言:javascript
运行
复制
SELECT asset_property.asset_id, category_name
FROM asset_property
LEFT JOIN asset
ON asset.asset_id = asset_property.asset_id
LEFT JOIN category
ON category.category_id = asset.category_id
GROUP BY asset_property.asset_id
HAVING COUNT(asset_property.asset_id) <= 2

MySQL的结果:

代码语言:javascript
运行
复制
| asset_property.asset_id | category_name |
|:-----------------------:|:--------------|
| 3048                    | Parking Lot   |
| 3519                    | Kitchen       |
| 3522                    | Kitchen       |
| 3597                    | Flooring      |
(etc...)

所以我也需要SELECTproperty_value WHEREproperty_id = 1。我希望这是合理的,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-01 13:33:58

也许开关/大小写适合这个查询。

代码语言:javascript
运行
复制
SELECT asset_property.asset_id, category_name,
( CASE property_id 
       WHEN 1 THEN property_value
       ELSE 0
  END
)
FROM asset_property
LEFT JOIN asset
     ON asset.asset_id = asset_property.asset_id
LEFT JOIN category
     ON category.category_id = asset.category_id
GROUP BY asset_property.asset_id
HAVING COUNT(asset_property.asset_id) <= 2

希望这有帮助..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10398143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档