gpt4 book ai didi

mysql - 从不同表中选择不同类型的列,而不使用联接

转载 作者:行者123 更新时间:2023-11-29 19:27:17 24 4
gpt4 key购买 nike

这是这样的情况,我有一个表“教师”,其列是(tid,tname)我有一个表“学生”,其列是(sid,sname)。假设它们具有 m:n 关系,我还有一个表 t_s (tid,sid),其中 tid 和 sid 分别引用教师的 tid 和学生的 sid。现在我想找到:教师姓名(及其tid)和每个教师下的学生人数。[不使用联接或笛卡尔积]

以下查询返回带有 tid 的计数:

SELECT t.tid, count(*) as numberofstudents
FROM t_s t
GROUPBY by t.tid;

如何将 tname 与相应的 tid 进行匹配,并尝试使用 union:

SELECT t.tid, count(*) as numberofstudents
FROM t_s t
GROUP BY t.tid
UNION
SELECT t1.tid,t1.tname
FROM teachers t1
WHERE t1.tid in (SELECT t2.tid
FROM t_s t2 )

发现不起作用,因为列类型不同。

有办法实现吗?谢谢!

最佳答案

我也很好奇为什么

without using Joins or cartesian product

但是,您可以尝试以下操作:

SELECT 
t.tid,
COUNT(*) as numberofstudents,
(SELECT t1.tname FROM teachers t1 WHERE t1.tid = t.tid) AS tname
FROM t_s t
GROUP BY by t.tid;

关于mysql - 从不同表中选择不同类型的列,而不使用联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42050032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com