如何在MySQL中使用子查询显示两个表的混合结果?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在MySQL中使用子查询显示两个表的混合结果?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2760字,纯文字阅读大概需要4分钟。
内容图文
![如何在MySQL中使用子查询显示两个表的混合结果?](/upload/InfoBanner/zyjiaocheng/882/ac7fb875c92647e29125e210816b7b52.jpg)
问题的标题可能不完全正确.我将尝试更好地解释我的问题.
我有两个具有以下结构的表:
表01:
ID | GENUS | SPECIES | INDIVIDUUM
1 | A | a | alfa
2 | B | b | beta
3 | C | c | gama
4 | D | d | delta
5 | E | e | epsilon
表02:
ID1 | ID2 | INDEX
1 | 2 | 21%
1 | 3 | 17%
1 | 4 | 32%
1 | 5 | 43%
2 | 1 | 21%
2 | 3 | 19%
2 | 4 | 94%
2 | 5 | 91%
. . .
. . .
. . .
5 | 1 | 43%
5 | 2 | 91%
5 | 3 | 83%
5 | 4 | 76%
比我以下选择:
SELECT id FROM table01 WHERE individuum in (alfa,epsilon);
并收到以下结果:
| ID |
| 1 |
| 5 |
有了这个我再做一个选择:
SELECT * FROM table02 WHERE ID1 in (1,5);
您可能已经知道,这次我收到以下结果:
结果02:
ID1 | ID2 | INDEX
1 | 2 | 21%
1 | 3 | 17%
1 | 4 | 32%
1 | 5 | 43%
5 | 1 | 43%
5 | 2 | 91%
5 | 3 | 83%
5 | 4 | 76%
现在,我想根据此结果创建一个新表,该表将为我提供以下字段(和值):
id | individuum | species | genus | id2 | individuum2 | species2 | genus2 | index |
1 | alfa | a | A | 2 | beta | b | B | 21% |
1 | alfa | a | A | 3 | gama | c | C | 17% |
1 | alfa | a | A | 4 | delta | d | D | 32% |
1 | alfa | a | A | 5 | epsilon | e | E | 43% |
5 | epsilon | e | E | 1 | alfa | a | A | 43% |
5 | epsilon | e | E | 2 | beta | b | B | 91% |
5 | epsilon | e | E | 3 | gama | c | C | 83% |
5 | epsilon | e | E | 4 | delta | d | D | 76% |
它以“分析”方式显示第一张表中的数据,这些数据以某种方式连接在一起,就像RESULT02以“合成”方式向我们显示的那样.
我虽然在类似以下内容中,但是我不确定这是正确的.
SELECT
b.id1,
(SELECT a.individuum FROM table01 a WHERE id = a.id1) individuum,
(SELECT a.species FROM table01 a WHERE id = a.id1) species,
(SELECT a.genus FROM table01 a WHERE id = a.id1) genus,
b.id2,
(SELECT a.individuum FROM table01 a WHERE id = a.id2) individuum2,
(SELECT a.species FROM table01 a WHERE id = a.id2) species2,
(SELECT a.genus FROM table01 a WHERE id = a.id2) genus2,
b.index
FROM
table02 b
WHERE
individuum in (alfa , epsilon);
ORDER BY index DESC";
感谢您为创建更好,更快和更高效的查询所提供的帮助.
解决方法:
尝试看看这是否有帮助:
SELECT
table01.id,
table01.individuum,
table01.species,
table01.genus,
-- -----------------
table02.id as id2,
-- -----------------
t01.individuum as individuum2
t01.species as species2,
t01.genus as genus2,
-- -----------------
table02.index
from
table01
inner join
table02 on table01.ID = table02.ID1
left join
table01 as t01 on t01.ID = table02.ID2
where
table01.individuum in (alfa , epsilon)
order by
index DESC;
内容总结
以上是互联网集市为您收集整理的如何在MySQL中使用子查询显示两个表的混合结果?全部内容,希望文章能够帮你解决如何在MySQL中使用子查询显示两个表的混合结果?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。