MYSQL为两个不同的id查询相同的字段

时间:2013-04-13 07:27:22

标签: mysql sql pivot

我的MYSQL功夫很弱,需要一些指导,这是我的2个表:

TABLE SHIPS

id |  ship_name
1     recon ship
2     light fighter
3     heavy fighter
4     light cruiser

TABLE FLEET

user_id | ship_id | amt
173          1       3
173          2       4
173          3       1
173          4       0
169          1       5
169          2       2
169          3       0
169          4       0

对于我的输出,我试图得到这样的数据:

ship_name      | amt1 | amt2
recon ship        3       5
light fighter     4       2
heavy fighter     1       0

其中amt1是用户173金额,amt2是用户169金额。我希望我已经明确表达了这一点,谢谢!

编辑:我又增加了一艘船和两个用户对于所述船只有amt = 0的情况,如何从结果中省略这样的情况,我在WHERE子句中尝试但它一直告诉我我有一个错误

1 个答案:

答案 0 :(得分:1)

根据您的问题,这将满足您的基本需求。

SELECT  a.ship_name,
        MAX(CASE WHEN b.user_ID = 173 THEN amt END) amt1,
        MAX(CASE WHEN b.user_ID = 169 THEN amt END) amt2
FROM    Ships a
        INNER JOIN Fleet b
            ON  a.id = b.ship_ID AND
                b.user_ID IN (173, 169)
GROUP   BY a.ship_name

如果要在不指定语句的任何值的情况下返回所有user_ID,则首选动态SQL

更新1

添加HAVING子句,

SELECT  ...
FROM    ...
GROUP   BY ....
HAVING  MAX(CASE WHEN b.user_ID = 173 THEN amt END) <> 0 AND
        MAX(CASE WHEN b.user_ID = 169 THEN amt END) <> 0