如何在mysql的一张表中显示2个不同的数据(两个条件)

Posted

技术标签:

【中文标题】如何在mysql的一张表中显示2个不同的数据(两个条件)【英文标题】:How to display 2 different data (Two Condition) in one table in mysql 【发布时间】:2018-06-30 08:14:06 【问题描述】:

我在 php mysql 中显示不同的数据时遇到了问题。我想在两种情况下显示不同的数据。例如:

我有桌子:

tbl_hrresponse

| id_reponse | id_atribut | skala | step |
| 1          | 1          | 1     | 1    |
| 1          | 2          | 4     | 1    |
| 1          | 3          | 2     | 1    |
| 1          | 1          | 5     | 2    |
| 1          | 2          | 6     | 2    |
| 1          | 3          | 2     | 2    |

所以,我想这样输出:

| id_reponse | id_atribut | skala step 1 | skala step 2 |
| 1          | 1          | 1            | 5      |
| 1          | 2          | 4            | 6      |
| 1          | 3          | 2            | 2      |

我有这样的代码:

$k = $db->pdo->prepare("select *, (CASE WHEN tbl_hresponder.step = '1' THEN tbl_hresponder.skala END) AS k,
                                                  (CASE WHEN tbl_hresponder.step = '2' THEN tbl_hresponder.skala END) AS q
                                                  from tbl_hresponder, tbl_atribut
                                                  where tbl_hresponder.id_atribut = tbl_atribut.id_atribut
                                                  AND tbl_hresponder.id_responder = '".$_GET['report']."'
                                                  AND tbl_hresponder.id_fservqual = '".$rfs['id_fservqual']."'
                                                  AND tbl_hresponder.step = 1");

【问题讨论】:

【参考方案1】:

你可以尝试使用CASE WHENmax函数。

SELECT t1.id_reponse,
       t1.id_atribut,
       max(case when t1.step = 1 then t1.skala end) `skala step 1`, 
       max(case when t1.step = 2 then t1.skala end) `skala step 2`
FROM tbl_hresponse t1 
GROUP  BY  
       t1.id_reponse,
       t1.id_atribut

sqlfiddle:http://sqlfiddle.com/#!9/92a73e/4

结果

| id_reponse | id_atribut | skala step 1 | skala step 2 |
|------------|------------|--------------|--------------|
|          1 |          1 |            1 |            5 |
|          1 |          2 |            4 |            6 |
|          1 |          3 |            2 |            2 |

【讨论】:

以上是关于如何在mysql的一张表中显示2个不同的数据(两个条件)的主要内容,如果未能解决你的问题,请参考以下文章

sql如何将一张表中的一列数据分为两列显示

MYSQL 将两张表整合在一张表中,不会遗漏任何一行

请问在Navicat for mysql 中如何显示一张表中的每个字段的注释呢?

SQL SERVER,一张表中,有多个字段关联另一张表,怎么写SQL语句?

如何定时更新mysql一张表中的某个字段

如何在一张表中添加两个查询?