mysql - 如何将行转换为列并在 Mysql 中查询它们

标签 mysql sql

我有三个表 Patients 表:其中包含我的患者姓名,Controls 表:代表可以为每种疾病绘制的 UI 控件,以及 < strong>ControlsValues 表,其中包含为每个患者提交的控件值

让我们有一些数据 Patients

|ID  | Name |
|-----------|
| 1  | Ara  |
| 2  | Sada |

控制

|ID  | Text | Type     |
|-----------|----------|
| 1  | age  | textbox  |
| 2  |alergy| checkbox |

然后是我要查询的 controlsValues 表

|ID  | contrlId | value    | patientId |
|---------------|----------|-----------|
| 1  | 1        | 23       | 1         |
| 2  | 2        | true     | 1         |
| 3  | 1        | 26       | 2         |
| 4  | 2        | false    | 2         |

当我想从具有 (controlId=1 AND value=23) 和 (controlId=2 AND value=true) 的 ControlsValues 表中返回该患者时,我的问题就出现了,在这种情况下条件是两行而不是两列,这是不可能的,所以我决定根据 controlId 将行更改为列,但我不知道如何,我已经搜索了 2 天,看到了很多样本​​,但没有一个帮我解决了问题

最佳答案

试试这个

    select * from controlvalues;

    +----+----------+-------+-----------+
    | id | contrlId | value | patientId |
    +----+----------+-------+-----------+
    |  1 |        1 | 23    |         1 |
    |  2 |        2 | true  |         1 |
    |  3 |        1 | 26    |         2 |
    |  4 |        2 | false |         2 |
    |  5 |        1 | 23    |         3 |
    |  6 |        2 | true  |         3 |
    +----+----------+-------+-----------+
    6 rows in set (0.00 sec)

mysql> SELECT cv1.patientId p1,cv1.contrlId ctrl1, cv1.value val1,cv2.patientId p2,cv2.contrlId ctrl2, cv2.value val2 FROM controlvalues cv1 , controlvalues cv2 WHERE cv1.patientId = cv2.patientId and cv1.contrlId = 2 and cv1.value = 'true' and cv2.contrlId = 1 and cv2.value = '23';

+------+-------+------+------+-------+------+
| p1   | ctrl1 | val1 | p2   | ctrl2 | val2 |
+------+-------+------+------+-------+------+
|    1 |     2 | true |    1 |     1 | 23   |
|    3 |     2 | true |    3 |     1 | 23   |
+------+-------+------+------+-------+------+
2 rows in set (0.00 sec)

关于mysql - 如何将行转换为列并在 Mysql 中查询它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30213731/

相关文章:

sql - 如何解决postgresql中group by和aggregate函数的问题

mysql - 如何为存储过程中相同的 NOT FOUND SQL EXCEPTION 的不同语句设置变量值

javascript - 使用 php/mysql/javascript 的导航菜单

mysql - 从数据库中删除 HTML 定界符后的字符串值?

SQL (MySQL) : Match first letter of any word in a string?

SQL Server 在 select 语句中使用聚合函数连接记录

php - MySQL 选择(Zend Framework 数据库选择)

php - mysqli::query(): 无法获取 mysqli

php - 将 MySQL 数据库值分配给 PHP 变量

sql - Entity Framework 和迁移 - 如何在远程服务器上更新我的数据库?