目前有四个表ABCD,A和B,C和D可以关联,但A和C,B和D也需要关联,所以我就想把A表和B表变成一个表,C和D表变成一个表,然后进行关联,可以么?
请问子查询的结果能否与另一个表做关联?两个子查询的结果能否做关联呢?其中子查询是从两个表中取的列,
SQL子查询
答案:2 悬赏:40 手机版
解决时间 2021-02-13 20:38
- 提问者网友:却不属于对方
- 2021-02-13 10:47
最佳答案
- 五星知识达人网友:刀戟声无边
- 2021-02-13 12:19
如果A表和B表,C表和D表并不是说明一件事或一个物,那么在设计表的时候,最好不要合并表,因为这样不符合数据库的设计思想。
子查询可以和另一个表做关联。
子查询可以和另一个表做关联。
全部回答
- 1楼网友:持酒劝斜阳
- 2021-02-13 12:57
1、二楼提供的sql我查询出来的结果如下。
mysql>selectstudent.stuno,stuname,stuage,score
->fromstudent,stumark
->wherestudent.stunoin(
->selectstumark.stuno
->fromstumark);
+-------+---------+--------+-------+
|stuno|stuname|stuage|score|
+-------+---------+--------+-------+
|1|张三|19|99|
|1|张三|19|96|
|2|李四|20|99|
|2|李四|20|96|
+-------+---------+--------+-------+
2、我提供两个sql语句。供楼主参考。
mysql>select*fromstudent,stumarkwherestudent.stuno=stumark.stuno;
+-------+---------+--------+-------+--------+-------+
|stuno|stuname|stuage|stuno|course|score|
+-------+---------+--------+-------+--------+-------+
|1|张三|19|1|java|99|
|2|李四|20|2|c#|96|
+-------+---------+--------+-------+--------+-------+
mysql>select*fromstudentta,stumarktbwhereta.stunoin(selectstunofroms
tumark)andta.stuno=tb.stuno;
+-------+---------+--------+-------+--------+-------+
|stuno|stuname|stuage|stuno|course|score|
+-------+---------+--------+-------+--------+-------+
|1|张三|19|1|java|99|
|2|李四|20|2|c#|96|
+-------+---------+--------+-------+--------+-------+
2rowsinset(0.00sec)
就是上面的那两个。我不明白楼主为什么一定要子查询。这个完全没有必要要。我感觉我第一种方法还行。
下面我再附上这两个表在mysql下创建的语句。供大家参考:
student表
#mysql-front3.2(build6.2)
;
;
;
;
#host:localhostdatabase:test
#------------------------------------------------------
#serverversion5.0.18-nt
dropdatabaseifexists`test`;
createdatabase`test`;
use`test`;
#
#tablestructurefortablestudent
#
createtable`student`(
`stuno`int(11)notnullauto_increment,
`stuname`varchar(11)defaultnull,
`stuage`int(11)defaultnull,
primarykey(`stuno`)
)engine=innodbdefaultcharset=utf8;
#
#dumpingdatafortablestudent
#
insertinto`student`(`stuno`,`stuname`,`stuage`)values(1,'张三',19);
insertinto`student`(`stuno`,`stuname`,`stuage`)values(2,'李四',20);
insertinto`student`(`stuno`,`stuname`,`stuage`)values(3,'王武',23);
insertinto`student`(`stuno`,`stuname`,`stuage`)values(4,'赵六',33);
;
;
;
stumark表:
#mysql-front3.2(build6.2)
;
;
;
;
#host:localhostdatabase:test
#------------------------------------------------------
#serverversion5.0.18-nt
dropdatabaseifexists`test`;
createdatabase`test`;
use`test`;
#
#tablestructurefortablestumark
#
createtable`stumark`(
`stuno`int(11)notnulldefault'0',
`course`varchar(11)defaultnull,
`score`int(11)defaultnull,
primarykey(`stuno`)
)engine=innodbdefaultcharset=utf8;
#
#dumpingdatafortablestumark
#
insertinto`stumark`(`stuno`,`course`,`score`)values(1,'java',99);
insertinto`stumark`(`stuno`,`course`,`score`)values(2,'c#',96);
;
;
;
希望我的回答能对你有帮助
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯