首页 > 解决方案 > SQL如何根据列值选择列

问题描述

我希望能够根据另一列中的值选择一列。举个简单的例子:从

Name  Status       Activities
A     Full         Tennis
B     Discounted   Badminton
C     Full         Badminton

Sport      Full   Discounted
Tennis      70    60
Badminton   110   90

我想输出:

 Name  Due         
 A     70     
 B     90
 C     110

要连接前两个表,只需突出显示需要从另一列的值中选择一列。我存储数据的选择可能很糟糕。任何想法 ?

标签: mysqljoin

解决方案


您的数据存储选择很好,尽管id在每个表中都有值并将人员表链接到会费id值而不是名称上的会费表可能会更好。鉴于您的结构,您可以通过简单的方式获得所需的结果JOIN

SELECT p.Name
     , CASE WHEN p.Status = 'Full' THEN d.Full ELSE d.Discounted END AS Due
FROM people p
JOIN dues d ON d.Sport = p.Activities

输出:

Name    Due
A       70
B       90
C       110

SQLFiddle 上的演示


推荐阅读