永发信息网

SQL子查询

答案:2  悬赏:40  手机版
解决时间 2021-02-13 20:38
  • 提问者网友:却不属于对方
  • 2021-02-13 10:47
目前有四个表ABCD,A和B,C和D可以关联,但A和C,B和D也需要关联,所以我就想把A表和B表变成一个表,C和D表变成一个表,然后进行关联,可以么?
请问子查询的结果能否与另一个表做关联?两个子查询的结果能否做关联呢?其中子查询是从两个表中取的列,
最佳答案
  • 五星知识达人网友:刀戟声无边
  • 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); ; ; ; 希望我的回答能对你有帮助
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯