从相关 table 中为每一行选择值
Selecting for each row values from a related table
我是 SQL 的新手,需要一些帮助。假设我有两个表,Person
(包含列 PID 和名称)和 Visit
(包含列 PID (fk) 和日期),其中每个 Person
可以有多个 Visit
s.
我想select每个人(有条件,此处省略)所有访问日期与他们所属的人在同一行,喜欢
| PID | Name | Date | Date | Date |
| ----| -------|--------- |----------|----------|
| 1 | Daniel | 25/01/21 | 13/06/21 | |
| 2 | Nicole | 26/01/21 | 18/06/21 | 07/10/21 |
| 3 | Kayla | 02/02/21 | 25/06/21 | |
我试过了
SELECT PersonID, Name (SELECT Date FROM Visit V WHERE V.PersonID = P.PersonID) FROM Person P
这显然行不通。 MySQL 说
#1242 - 子查询返回超过 1 行
这是我意料之中的!我该如何解决这个问题?
这个查询会给你一些不同的结果(日期在一列中),但如果你需要的话,它会很容易解析:
SELECT person.PID,person.Name,group_concat(visit_date) as dates from person,visit where person.PID = visit.PID group by person.PID
会是这样的:
+-----+-------+----------------------------------+
| PID | Name | Dates |
+-----+-------+----------------------------------+
| 1 | Marek | 2022-05-15,2022-05-16,2022-05-12 |
| 2 | Magda | 2022-05-16,2022-05-16,2022-05-16 |
+-----+-------+----------------------------------+```
我是 SQL 的新手,需要一些帮助。假设我有两个表,Person
(包含列 PID 和名称)和 Visit
(包含列 PID (fk) 和日期),其中每个 Person
可以有多个 Visit
s.
我想select每个人(有条件,此处省略)所有访问日期与他们所属的人在同一行,喜欢
| PID | Name | Date | Date | Date |
| ----| -------|--------- |----------|----------|
| 1 | Daniel | 25/01/21 | 13/06/21 | |
| 2 | Nicole | 26/01/21 | 18/06/21 | 07/10/21 |
| 3 | Kayla | 02/02/21 | 25/06/21 | |
我试过了
SELECT PersonID, Name (SELECT Date FROM Visit V WHERE V.PersonID = P.PersonID) FROM Person P
这显然行不通。 MySQL 说
#1242 - 子查询返回超过 1 行
这是我意料之中的!我该如何解决这个问题?
这个查询会给你一些不同的结果(日期在一列中),但如果你需要的话,它会很容易解析:
SELECT person.PID,person.Name,group_concat(visit_date) as dates from person,visit where person.PID = visit.PID group by person.PID
会是这样的:
+-----+-------+----------------------------------+
| PID | Name | Dates |
+-----+-------+----------------------------------+
| 1 | Marek | 2022-05-15,2022-05-16,2022-05-12 |
| 2 | Magda | 2022-05-16,2022-05-16,2022-05-16 |
+-----+-------+----------------------------------+```