具有相同和不同列的两个mysql查询的联合结果
我有个问题。有两个MySQL查询,有相同的列,也有不同的列。我希望合并两个查询的结果,我希望结果包含这两个查询的每一列结果(但相同的列只显示一次) 我试图解释: 问题1:具有相同和不同列的两个mysql查询的联合结果,mysql,sql,database,Mysql,Sql,Database,我有个问题。有两个MySQL查询,有相同的列,也有不同的列。我希望合并两个查询的结果,我希望结果包含这两个查询的每一列结果(但相同的列只显示一次) 我试图解释: 问题1: SELECT pcs_persons.id AS id_person, pcs_persons.firstname AS firstname, pcs_persons.lastname AS lastname, pcs_lineup.id_club, pcs_lineup.type, count(case when p
SELECT pcs_persons.id AS id_person, pcs_persons.firstname AS firstname,
pcs_persons.lastname AS lastname, pcs_lineup.id_club, pcs_lineup.type, count(case
when pcs_lineup.type = '2' then 1 else NULL end) AS starter, count(case when
pcs_subs.id_person_in = pcs_lineup.id_person AND pcs_lineup.type = '3' then 1 else
NULL end) AS subs
FROM pcs_lineup
JOIN pcs_persons ON pcs_lineup.id_person = pcs_persons.id AND pcs_lineup.id_club = 2
JOIN pcs_matchs ON pcs_lineup.id_match = pcs_matchs.id AND pcs_matchs.id_compet
= 1 AND pcs_matchs.id_season = 1
LEFT JOIN pcs_subs ON pcs_lineup.id_person = pcs_subs.id_person_in
GROUP BY id_person
查询1的结果:
+-------------+------------+---------------+----------+-------+----------+------+
| id_person | firstname | lastname | id_club | type | starter | subs |
+-------------+------------+---------------+----------+-------+----------+------+
| 194 | Jesper | Hansen | 2 | 2 | 1 | 0 |
| 195 | Mikkel | Andersen | 2 | 3 | 0 | 0 |
| 197 | Alexander | Scholz | 2 | 2 | 1 | 0 |
| 198 | Erik | Sviatchenko | 2 | 2 | 2 | 0 |
| 199 | Kian | Hansen | 2 | 2 | 1 | 1 |
| 204 | Manjrekar | James | 2 | 3 | 0 | 0 |
| 207 | | Paulinho | 2 | 2 | 1 | 0 |
| 209 | Joel | Andersson | 2 | 2 | 2 | 0 |
| 214 | Jens | Cajuste | 2 | 3 | 0 | 0 |
| 215 | | Evander | 2 | 2 | 1 | 0 |
| 216 | Jakob | Poulsen | 2 | 3 | 0 | 0 |
| 217 | Ayo | Simon Okosun | 2 | 2 | 1 | 0 |
| 225 | Gustav | Wikheim | 2 | 2 | 1 | 0 |
| 226 | Mikael | Anderson | 2 | 3 | 0 | 1 |
| 229 | Awer | Mabil | 2 | 3 | 0 | 1 |
| 230 | Frank | Onyeka | 2 | 2 | 1 | 0 |
| 234 | Artem | Dovbyk | 2 | 3 | 0 | 1 |
| 235 | Júnior | Brumado | 2 | 2 | 1 | 1 |
+-------------+------------+---------------+----------+-------+----------+------+
问题2:
SELECT pcs_persons.id AS id_person, pcs_persons.firstname AS firstname,
pcs_persons.lastname AS lastname, pcs_lineup.id_club, pcs_lineup.type, count(case
when pcs_goals.id_match = pcs_matchs.id AND pcs_goals.id_person =
pcs_lineup.id_person then 1 else NULL end) AS goal
FROM pcs_lineup
JOIN pcs_persons ON pcs_lineup.id_person = pcs_persons.id AND pcs_lineup.id_club = 2
JOIN pcs_matchs ON pcs_lineup.id_match = pcs_matchs.id AND pcs_matchs.id_compet
= 1 AND pcs_matchs.id_season = 1
LEFT JOIN pcs_goals ON pcs_lineup.id_person = pcs_goals.id_person AND
pcs_goals.goal_csc = 0
GROUP BY id_person
查询2的结果:
+-------------+------------+---------------+----------+-------+------+
| id_person | firstname | lastname | id_club | type | goal |
+-------------+------------+---------------+----------+-------+------+
| 194 | Jesper | Hansen | 2 | 2 | 0 |
| 195 | Mikkel | Andersen | 2 | 3 | 0 |
| 197 | Alexander | Scholz | 2 | 2 | 0 |
| 198 | Erik | Sviatchenko | 2 | 2 | 1 |
| 199 | Kian | Hansen | 2 | 2 | 0 |
| 204 | Manjrekar | James | 2 | 3 | 0 |
| 207 | | Paulinho | 2 | 2 | 0 |
| 209 | Joel | Andersson | 2 | 2 | 2 |
| 214 | Jens | Cajuste | 2 | 3 | 0 |
| 215 | | Evander | 2 | 2 | 0 |
| 216 | Jakob | Poulsen | 2 | 3 | 0 |
| 217 | Ayo | Simon Okosun | 2 | 2 | 0 |
| 225 | Gustav | Wikheim | 2 | 2 | 0 |
| 226 | Mikael | Anderson | 2 | 3 | 0 |
| 229 | Awer | Mabil | 2 | 3 | 0 |
| 230 | Frank | Onyeka | 2 | 2 | 0 |
| 234 | Artem | Dovbyk | 2 | 3 | 0 |
| 235 | Júnior | Brumado | 2 | 2 | 0 |
+-------------+------------+---------------+----------+-------+------+
我想合并这两个表(我尝试了UNION和UNIONALL,但没有成功)。预期结果如下:
+-------------+------------+---------------+----------+-------+----------+------+-------+
| id_person | firstname | lastname | id_club | type | starter | subs | goal |
+-------------+------------+---------------+----------+-------+----------+------+-------+
| 194 | Jesper | Hansen | 2 | 2 | 1 | 0 | 0 |
| 195 | Mikkel | Andersen | 2 | 3 | 0 | 0 | 0 |
| 197 | Alexander | Scholz | 2 | 2 | 1 | 0 | 0 |
| 198 | Erik | Sviatchenko | 2 | 2 | 2 | 0 | 1 |
| 199 | Kian | Hansen | 2 | 2 | 1 | 1 | 0 |
| 204 | Manjrekar | James | 2 | 3 | 0 | 0 | 0 |
| 207 | | Paulinho | 2 | 2 | 1 | 0 | 0 |
| 209 | Joel | Andersson | 2 | 2 | 2 | 0 | 2 |
| 214 | Jens | Cajuste | 2 | 3 | 0 | 0 | 0 |
| 215 | | Evander | 2 | 2 | 1 | 0 | 0 |
| 216 | Jakob | Poulsen | 2 | 3 | 0 | 0 | 0 |
| 217 | Ayo | Simon Okosun | 2 | 2 | 1 | 0 | 0 |
| 225 | Gustav | Wikheim | 2 | 2 | 1 | 0 | 0 |
| 226 | Mikael | Anderson | 2 | 3 | 0 | 1 | 0 |
| 229 | Awer | Mabil | 2 | 3 | 0 | 1 | 0 |
| 230 | Frank | Onyeka | 2 | 2 | 1 | 0 | 0 |
| 234 | Artem | Dovbyk | 2 | 3 | 0 | 1 | 0 |
| 235 | Júnior | Brumado | 2 | 2 | 1 | 1 | 0 |
+-------------+------------+---------------+----------+-------+----------+------+-------+
我希望一些专家能帮助我,因为我不知道如何才能做到这一点。非常感谢 根据您的两个查询,您执行分组的方式是:在每个查询上加盖戳记,以确保它们本身是可靠的结果(每个查询)。 这意味着联合不是解决这个问题的办法 我能想到的最接近的解决方案是将两个查询都包含为源(临时集) 例如:
SELECT ........
FROM ( query1 ) as q1
JOIN ( query2 ) as q2 ON q2.id_person = q1.id_person
请同时发布原始的3张表格,以便有人能做出要求的结果。这里有六张表格…两天前我附上了