两mysql 多表联合查询查,可否一对多显示

sql语句多表联查问题_百度知道
sql语句多表联查问题
一共有4个表:news_info,news_class,city_info,user_info
字段:id,news_tit,news_content,addDate,tj,city_id
news_class 字段:id,news_class,news_class_fid,news_class_px,user_id
字段:id,city,fid
user_info...
我有更好的答案
select a.news_tit,a.news_content ,b.news_class,c.city,d.username,d.useremailfrom news_info a,news_class b,city_info c,user_info dwhere a.city_id=c.id and b.user_id=d.id and a.id=b.news_class_fid你看一下这样可不可以
采纳率:26%
SELECT AA.NEWS_TIT,AA.NEWS_CONTENT,BB.NEWS_CLASS,CC.CITY,DD.USERNAME,
DD.USEREMAILFROM
NEWS_INFO AA,NEWS_CLASS BB,CITY_INFO CC,USER_INFO DD
为您推荐:
其他类似问题
您可能关注的内容
sql语句的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。有两张表数据如下:----------------------------------------UsersU_Id
有两张表数据如下:----------------------------------------UsersU_Id
e...----------------------------------------GoodsG_Id
2...----------------------------------------怎么通过一条SQL语句得到一下结果:U_Id
全部答案(共1个回答)
Users t1 left join
Goods t2on t1.U_Id=t2.G_UIdgroup by t1.U_Id,t1.U_Name order by t1.U_Id
当然是这样。小明读完一页,剩下的页数就会减少一页。
就是表的名字嘛
不觉得好奇啊
用asp,javascript --
(附件:二级关联下拉菜单_access.rar)
有问题再联系
查询语句后面order by 。。。desc
SELECT 语句可以带一个 FOR UPDATE 子句,这样可以在运行SELECT语句时相应的记录被锁定直至事务被提交。也就达到了你说的“排他”的效果。
建表问题很大啊,父子关系的栏位没有建标示(最少也把C,E基础部品表出来).下面的方法倒出临时表,再处理吧!
create table C
BHID VARC...
答: 索尼dsc-w630影像数据库文件错误里面的照片还能找回来
答: 入侵检测模式匹配模式匹配就是将收集到的信息与已知的网络入侵和系统误用模式数据库进行比较,从而发现违背安全策略的行为
答: 甲骨文数据库软件
  Oracle(Oracle培训 ) 10g (企业版 50suer)
  Oracle 11g 企业版
  Oracle 10g企业 一个...
关于三国武将的排名在玩家中颇有争论,其实真正熟读三国的人应该知道关于三国武将的排名早有定论,头十位依次为:
头吕(吕布)二赵(赵云)三典韦,四关(关羽)五许(许楮)六张飞,七马(马超)八颜(颜良)九文丑,老将黄忠排末位。
关于这个排名大家最具疑问的恐怕是关羽了,这里我给大家细细道来。赵云就不用多说了,魏军中七进七出不说武功,体力也是超强了。而枪法有六和之说,赵云占了个气,也就是枪法的鼻祖了,其武学造诣可见一斑。至于典韦,单凭他和许楮两人就能战住吕布,武功应该比三英中的关羽要强吧。
其实单论武功除吕布外大家都差不多。论战功关羽斩颜良是因为颜良抢军马已经得手正在后撤,并不想与人交手,没想到赤兔马快,被从后背赶上斩之;文丑就更冤了,他是受了委托来招降关羽的,并没想着交手,结果话没说完关羽的刀就到了。只是由于过去封建统治者的需要后来将关羽神话化了,就连日本人也很崇拜他,只不过在日本的关公形象是扎着日式头巾的。
张飞、许楮、马超的排名比较有意思,按理说他们斗得势均力敌都没分出上下,而古人的解释是按照他们谁先脱的衣服谁就厉害!有点搞笑呦。十名以后的排名笔者忘记了,好象第11个是张辽。最后需要说明的是我们现在通常看到的《三国演义》已是多次修改过的版本,笔者看过一套更早的版本,有些细节不太一样。
规模以上工业企业是指全部国有企业(在工商局的登记注册类型为"110"的企业)和当年产品销售收入500万元以上(含)的非国有工业企业。
我个人认为解放后初期的土改,是农民分得了土地,而不是租土地。明确来说,当时的土改就是农民私有。我认为,当时可能是出于对“私有制”的忌讳,所以不敢直接声称是“私有”,而是用“农民的”来代替。
之所以说当时是私有,理由大致如下:
1.土改,准确来说是对生产资料的重新分配。当时参与土改的生产资料,不但包括土地,还包括牛马驴骡、农具等生产资料。而这些都是属于农民私有的。后来合作化运动之前,有些农民就曾经把牛马等牲口杀了吃肉,政府当时也只是批评他们的思想,并没有强力阻止。可见这些生产资料的确是属于私有的。
2.在一些地方的土改总结中,曾经对各阶层的土地分配量进行过汇总。在土改中,也并不是全部重新分配。例如富农和中农的土地都得到了一定保护。因此,可以推断,平均地权后的土地拥有量,仍然不是完全平等的。而如果是土地公有,那么富农中农的土地也应当予以重新分配。
3.合作化运动期间,鼓动农民用土地入股,参与合作组。如果土地不是农民私有的,那么“用土地入股”之说从何谈起?只有土地是农民私有的,才能够用“自愿”和“入股”等口号来鼓动农民。
4.当农业社会主义改造结束后,官方曾经明确认定是:把农民的土地所有制改造为集体所有制。我们知道,集体所有制才是真正具有公有制意义的,既然集体所有制是刚改造成立的,那么此前就不应该是公有制,否则也就没有这么大的政治意义了。所以,被改造之前,应当是私有制。
5.据说薄一波在《若干重大历史问题和回顾》中曾经提到:如果土改结束后,继续实行新民主主义,不急于把私有制改造为公有制,那么可能就没有后来的这么多错误。(原话记不清了,大体是这个意思)可见,当时党内高层,也是把农民所有制认定为私有制。
6.参照当时的工业情况。土改期间的工业依然是存在私有制的。直到合作化运动后,才逐渐兼并了私有企业。工业合作化期间,也曾经采用了“入股”“分红”“自愿”等手法,这和农业合作化方式是一致的。很难想像,如果农村当时真的消灭了私有制,那么这些私人企业家怎么还能够放心生产下去。所以我认为,当时的土改只能是建立了农民私有制,这样才能让私人企业家吃一个定心丸,不至于立马停工逃跑。
土地是否拥有私有权,很大程度上要看土地拥有者是否能够自由买卖土地。但是土改初期,一来,地主的财富基本被瓜分完毕;二来,地主即使留下一点财富,也决计不敢表露自己还藏有私钱;三来,刚分得土地的农民没有钱去购买土地。从而使得当时的地主无地可卖,无地敢买;农民不愿卖地,没钱买地。因此造成几乎没有土地买卖的可能性。既然没有土地买卖,其私有权也相对体现的并不明显。
不过从上述种种理由来看,虽然土地买卖并不明显,但并不能认为当时就不是私有制。土改结束后,农民的劳动积极性大大提高,当年的农业产量得到了大幅增长。在当时没有提出承包概念,没有明确承包年限的情况下,如果不是私有制,很难想像农民会有这么大的劳动积极性。要知道,三中全会后,也是明确了足够的承包年限后,农民才具有较高的积极性。如果建国初期的土改是公有制或集体所有制的,在没有承包年限的承诺下,我不太相信农民会有足够的劳动积极性。
借:长期待摊费用
贷:银行存款
借:管理费用——开办费
贷:长期待摊费用
中医学认为,竹笋味甘,性寒,入胃、大肠经,具有清热化痰、利水消肿、润肠通便等功能,尤其适合患有习惯性便秘的人食用。竹笋香菇汤清热化痰、利水消肿、润肠通便,是孕期一款很好的美味汤。竹笋香菇汤做法
原料:竹笋30克,香菇30克,金针菇30克,生姜8克,葱10克。
调料:花生油10克,盐6克,熟鸡油1克。
1.将竹笋切成斜片,香菇去蒂洗净,金针菇洗净去根,生姜切丝,葱切段。
2.锅内烧水,待水开后,投入竹笋,用中火煮尽青味,捞起待用。
3.另烧锅下油,放入姜丝抢香锅,注入适量清汤烧开,投入竹笋、香菇、金针菇、葱段,边煮边调入盐,至煮透入味时,淋入熟鸡油、出锅即成。
推荐理由:
中医学认为,竹笋味甘,性寒,入胃、大肠经,具有清热化痰、利水消肿、润肠通便等功能,尤其适合患有习惯性便秘的人食用。竹笋香菇汤清热化痰、利水消肿、润肠通便,是孕期一款很好的美味汤。
操作要点:竹笋要购嫩点的,滚汤的火要大。
最佳保胎食物:菠菜
叶酸的最大功能在于保护胎儿免受脊髓分裂、脑积水、无脑等神经系统畸形之害。而菠菜含有丰富的叶酸,每100克菠菜的叶酸含量高达350微克,名列蔬菜之首。因此专家主张早期的两个月内应多吃菠菜或服用叶酸片。同时,菠菜中的大量B族维生素还可防止孕妇盆腔感染、精神抑郁、失眠等常见的孕期并发症。
最佳防吐食物:土豆
晨吐是孕妇最难受也是最常见的反应之一,给孕妇带来相当大的痛苦。选择适合孕妇口味的食物有良好的防吐作用。营养学家认为,柠檬和土豆含有多种维生素,对孕妇尤为合适。
最佳防早产食物:鱼
丹麦专家研究表明,常吃鱼有防止早产的作用。丹麦得乐群岛的孕妇,平均孕期比其他地区长5天以上,奥妙在于食谱中鱼类所占比重较大,因而专家推测鱼肉中某种特殊脂肪酸起了积极作用。由于孕妇的孕期延长,婴儿的平均出生体重也比其他地区高107克,为日后的发育打下了良好的基础,故此孕期要多吃鱼。
一般不建议准妈妈吃火锅,嘴馋的准妈妈要吃就要注意一下几点了:
火锅太远勿强伸手
假如火锅的位置距自己太远,不要勉强伸手灼食物,以免加重腰背压力,导致腰背疲倦及酸痛,最好请丈夫或朋友代劳。
加双筷子免沾菌
准妈妈应尽量避免用同一双筷子取生食物及进食,这样容易将生食上沾染的细菌带进肚里,而造成泻肚及其他疾病。
自家火锅最卫生
准妈妈喜爱吃火锅,最好自己在家准备,除汤底及材料应自己安排外,食物卫生也是最重要的。切记,无论在酒楼或在家吃火锅时,任何食物一定要灼至熟透,才可进食。
降低食量助消化
怀孕期间可能会出现呕吐反胃现象,因此胃部的消化能力自然降低。吃火锅时,准妈妈若胃口不佳,应减慢进食速度及减少进食分量,以免食后消化不了,引致不适。
吃火锅还必须讲顺序
涮火锅的顺序很有讲究,最好吃前先喝小半杯新鲜果汁,接着吃蔬菜,然后是肉。
1.无助胎儿营养
经过调查发现,在怀孕末期有高达85%的孕妇都过胖,却有94%的胎儿,体重都没有相对增加。有一些孕妇认为要多吃,才能给宝宝更充足的营养,所以妈妈吃宵夜因此体重过重没关系。但事实却是二者并不相等,因为在怀孕末期有高达85%的孕妇都过胖,却有94%的胎儿,体重都没有相对增加。
2.影响睡眠
夜晚是身体休息的时间,吃宵夜之后,容易增加胃肠道的负担,让胃肠道在夜间无法得到充分的休息。因为按照人体生理变化,夜晚是身体休息的时间,吃下宵夜之后,容易增加胃肠道的负担,让胃肠道在夜间无法得到充分的休息。
尤其是有一些孕妇到了怀孕末期,容易产生睡眠的问题,假使再吃宵夜,也可能会影响孕妇的睡眠质量,因而大体上并不建议孕妇吃宵夜。
3.引起肥胖
夜间身体的代谢率会下降,热量消耗也最少,因而容易将多余的热量转化为脂肪堆积起来,造成体重过重的问题,引起产后恢复能力变差。妈妈因摄入过多的热量,造成母体过胖,可能会引起产后恢复能力变差,无法回复到怀孕前的正常体重,而需要产后减重。
孕妇吃完最后一餐后应该过2到3小时再睡觉,这样才不会影响睡眠,保证睡眠质量。如果孕妇夜间饿了可以喝杯牛奶等流质食物,尽量不要吃油炸的垃圾食品,增加胃的负担。
二、半夜不宜吃的食物
1.胀气的食物
怀孕之后晚上的时候千万别吃胀气食物,比如红薯还有芋头之类的,因为这些食物在消化过程中会产生较多的气体,从而产生腹胀感,妨碍正常睡眠。
2.大量牛奶
有些孕妈咪认为牛奶健康又营养,半夜泡杯牛奶来喝最好了。虽然牛奶可以帮助入睡,营养丰富,但是也不能无节制地喝。
有研究报告认为,牛奶中的钙质和色氨酸具有安眠的效果,一旦心理上依赖这些助眠食物,就有可能导致摄入量过多。如果晚上喝了太多的牛奶,不仅会让孕妇半夜跑厕所影响睡眠,同时也有可能让孕妇在睡之前对自己会不会半夜跑厕所产生一定的忧虑情绪,反而会影响睡眠质量。不是不让喝牛奶,而是不要喝大量牛奶,毕竟,怀孕期间睡前喝牛奶是有好处的。
3.重口味的食品
怀孕之后在晚上的时候千万别吃辣咸的食物,比如泡椒凤爪、麻辣笋干。可是这些食物可能会造成胃部灼热及消化不良,从而干扰睡眠。而且容易使血压上升,导致情绪紧绷,造成失眠。另外,如果摄入过多盐分,会导致血液中钠的浓度升高,进而导致细胞失水,尿量增加,出现与临睡前大量喝水同样的效果。这样有可能导致睡眠过程中被尿憋醒跑厕所,影响睡眠质量。怀孕期间本来就容易疲劳,如果睡眠不充足,孕妇自身身体和胎儿都会抗议的。
4.油腻食物
有些孕妈妈觉得半夜醒来说明自身需要加强营养,因此会选择一些油腻的食物,比如猪肉脯。其实这是非常不可取的。
油腻食物含有大量的脂肪和能量,需要相当长的时间去消化,因此身体可能保持长时间的高血糖状态。如果孕妇半夜吃了油腻的食物,第二天起床后可能会有烧心的不适感,因此应当控制油腻食物的摄入量。
三、半夜可以吃的食物
那如果准妈妈们真的饿了怎么办?难道就眼睁睁挨饿到天明吧,当然也不是。
燕麦片、鱼粥、瘦肉粥都是不错的选择,不过注意别喝太多。吃得过饱影响睡眠不说,还会导致器官熬夜工作,不利于身体排毒,导致健康状况下降。
此外,可以准备一些小馒头,面条之类的简单容易做的食物,晚餐之后做点排骨汤,夜里饿了用排骨汤煮一小碗面条,这些食物营养又健康,关键是容易消化吸收,不会对肠胃影响太大,准妈妈可以放心食用。
1 绝对不吃霉变食品
春天气候多变,食物很容易发生霉变,孕妇要远离霉变食品,防止发生食物中毒或发生腹痛腹泻等症状而引起胎动不安。
叶酸是妊娠早期蛋白质合成的基础,由于体内不能储存叶酸,因此孕妇必须通过每日进食补充叶酸;
孕妇可多食用富含蛋白质的食品,比如:肉类、鱼类、家禽、豆制品和鸡蛋等;
在每100克的牛奶里含有100毫克非常容易吸收利用的钙,每天1杯牛奶可为孕妇补充钙。此外,含钙量较高的还有海带、紫菜和虾皮等;
5 水果和维生素
每天食用适量水果,在春季可额外多吃些芝麻、核桃仁、黑糯米、红枣和赤豆等。此外,动物肝脏也可有效补充铁和维生素A,粗粮、粮谷类和麸皮面包等还可补充维生素B1。
目前,中国回收网点遍布全国各地,已形成一批较大规模 洗衣机约为1.7亿台,电冰箱约为1.3亿台,电脑1 600万台,家用空调拥有量也很大。
济南梦工场培训学校于2002年创办,是济南市人民政府、文化局批准的正规画院,是具有独立法人资格的培训实体的全封闭正规美术高考培训机构。以历年优秀教学业绩,为全国高等院校输送了大批美术人才,高考美术培训有专门的课程可以学习,有意向的就去梦工场看看现场吧。
我推荐蜗蜗护发精油还不错,我有用过,特别喜欢,是“留香72小时”的纯植物护发精油,以其持久留香的特点深受女性的喜爱。
从朋友哪里了解到昆明车乐士做过宝马。奥迪。奔驰等的改装。
昆明车乐士作为一家集汽车音响代理、销售、设计、安装与维修为一体的专业技术服务企业。为每一件产品把好关脉,在推荐每一套喇叭、每一台功放、没一个低音甚至每一张隔音,我们都会先试听、试用,以致选择到性价比高的产品!
正在加载...
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区sql 两表 一对多查询问题_百度知道
sql 两表 一对多查询问题
有一个记录员工的表a
有一个记录员工业绩的表b一个员工会有多条业绩记录 请问怎么取出某员工的所有业绩信息回答者模拟几个字段说明意思即可!
我有更好的答案
这应该是一个1对多的映射关系1个员工可以对应多条业绩记录那么可以设员工表的主键是员工id,并且作为业绩表的外键。比如业绩表叫做achievement_table员工id对应的列为employee_id比如员工表叫做employee_table 主键id为员工id,以及表中有列employee_name 表示员工名字可以 select * from employee_table as a,achievement_table as b where a.id = b.emplyee_id and b.emplyee_name = '员工姓名'这样就完成了通过员工姓名 取得对应业绩记录的查询,这个查询是联合查询,效率高于嵌套子查询,希望帮到你。
采纳率:58%
你的表b里应该有一个员工编号或者姓名之类的字段吧那就直接从表b里查询就行select employeeID, score from tableB where employeeID=12345select employeename, score from tableB where employeename='aaaaa'
为了消除数据冗余,所以才将数据做成两张表存放的形式,所以B表里面肯定有员工编号的字段select a.员工编号,...from a left join b on a.员工编号=b.员工编号where a.员工编号=‘’这样就能把某个员工的业绩都列出了。
使用链表查询select a.你要的列,b.列 from a inner join b on(a.与b表有关系的列=b.与a表有关系的列)
其他1条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。MySQL中基本的多表连接查询教程
转载 &发布时间:日 17:35:50 & 作者:真实的归宿
这篇文章主要介绍了MySQL中基本的多表连接查询教程,附带了JOIN的基本连接用法讲解,需要的朋友可以参考下
一、多表连接类型
1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','& 如:
&&&&&&& 由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢。一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN
&2.&& 内连接INNER JOIN 在MySQL中把I
SELECT * FROM table1 CROSS JOIN table2
SELECT * FROM table1 JOIN table2
SELECT * FROM table1,table2
NNER JOIN叫做等值连接,即需要指定等值连接条件在MySQL中CROSS和INNER JOIN被划分在一起。 join_table: table_reference [INNER | CROSS] JOIN table_factor [join_condition]
3. MySQL中的外连接,分为左外连接和右连接,即除了返回符合连接条件的结果之外,还要返回左表(左连接)或者右表(右连接)中不符合连接条件的结果,相对应的使用NULL对应。
3 | daodao
user_action表:
user_id | action
—————
select id, name, action from user as u
left join user_action a on u.id = a.user_id
——————————–
3 | daodao | null
注意到user_action中还有一个user_id=4, action=swim的纪录,但是没有在结果中出现,
而user表中的id=3, name=daodao的用户在user_action中没有相应的纪录,但是却出现在了结果集中
因为现在是left join,所有的工作以left为准.
结果1,2,3,4都是既在左表又在右表的纪录,5是只在左表,不在右表的纪录
工作原理:
从左表读出一条,选出所有与on匹配的右表纪录(n条)进行连接,形成n条纪录(包括重复的行,如:结果1和结果3),如果右边没有与on条件匹配的表,那连接的字段都是null.然后继续读下一条。
我们可以用右表没有on匹配则显示null的规律, 来找出所有在左表,不在右表的纪录, 注意用来判断的那列必须声明为not null的。
select id, name, action from user as u
left join user_action a on u.id = a.user_id
where a.user_id is NULL
&&&&&&& 1.列值为null应该用is null 而不能用=NULL
&&&&&&&& 2.这里a.user_id 列必须声明为 NOT NULL 的.
上面sql的result:
id | name | action
————————–
3 | daodao | NULL
——————————————————————————–
一般用法:
a. LEFT [OUTER] JOIN:
除了返回符合连接条件的结果之外,还需要显示左表中不符合连接条件的数据列,相对应使用NULL对应
SELECT column_name FROM table1 LEFT [OUTER] JOIN table2 ON table1.column=table2.column&
b. RIGHT [OUTER] JOIN:
RIGHT与LEFT JOIN相似不同的仅仅是除了显示符合连接条件的结果之外,还需要显示右表中不符合连接条件的数据列,相应使用NULL对应
SELECT column_name FROM table1 RIGHT [OUTER] JOIN table2 ON table1.column=table2.column&
1. on a.c1 = b.c1 等同于 using(c1)
2. INNER JOIN 和 , (逗号) 在语义上是等同的
3. 当 MySQL 在从一个表中检索信息时,你可以提示它选择了哪一个索引。
如果 EXPLAIN 显示 MySQL 使用了可能的索引列表中错误的索引,这个特性将是很有用的。
通过指定 USE INDEX (key_list),你可以告诉 MySQL 使用可能的索引中最合适的一个索引在表中查找记录行。
可选的二选一句法 IGNORE INDEX (key_list) 可被用于告诉 MySQL 不使用特定的索引。如:
mysql& SELECT * FROM table1 USE INDEX (key1,key2)
-& WHERE key1=1 AND key2=2 AND key3=3;
mysql& SELECT * FROM table1 IGNORE INDEX (key3)
-& WHERE key1=1 AND key2=2 AND key3=3;
二、表连接的约束条件
&添加显示条件WHERE, ON, USING
1. WHERE子句
SELECT * FROM table1,table2 WHERE table1.id=table2.
SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.
SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id
LEFT JOIN table3 ON table2.id=table3.
3. USING子句,如果连接的两个表连接条件的两个列具有相同的名字的话可以使用USING
SELECT FROM LEFT JOIN USING ()
连接多于两个表的情况举例:
SELECT artists.Artist, cds.title, genres.genre
LEFT JOIN genres N cds.genreID = genres.genreID
LEFT JOIN artists ON cds.artistID = artists.artistID;
SELECT artists.Artist, cds.title, genres.genre
LEFT JOIN genres ON cds.genreID = genres.genreID
LEFT JOIN artists -& ON cds.artistID = artists.artistID
WHERE (genres.genre = 'Pop');
--------------------------------------------
&另外需要注意的地方 在MySQL中涉及到多表查询的时候,需要根据查询的情况,想好使用哪种连接方式效率更高。
&1. 交叉连接(笛卡尔积)或者内连接 [INNER | CROSS] JOIN
&2. 左外连接LEFT [OUTER] JOIN或者右外连接RIGHT [OUTER] JOIN 注意指定连接条件WHERE, ON,USING.
PS:基本的JOIN用法
首先我们假设有2个表A和B,他们的表结构和字段分别为:
1&Football
2&Basketball
1.& 内联结:
Select A.Name, B.Hobby from A, B where A.id = B.id
,这是隐式的内联结,查询的结果是:
Name Hobby
Tim Football
Jimmy Basketball
Jimmy Tennis
Tom Soccer
它的作用和
Select A.Name from A INNER JOIN B ON A.id = B.id
是一样的。这里的INNER JOIN换成CROSS JOIN也是可以的。
2.& 外左联结
Select A.Name from A Left JOIN B ON A.id = B.id
,典型的外左联结,这样查询得到的结果将会是保留所有A表中联结字段的记录,若无与其相对应的B表中的字段记录则留空,结果如下:
Name Hobby
Tim Football
Jimmy Basketball,Tennis
Tom Soccer
所以从上面结果看出,因为A表中的John记录的ID没有在B表中有对应ID,因此为空,但Name栏仍有John记录。
3.& 外右联结
如果把上面查询改成外右联结:
Select A.Name from A Right JOIN B ON A.id = B.id
,则结果将会是:
Name Hobby
Tim Football
Jimmy Basketball
Jimmy Tennis
Tom Soccer
这样的结果都是我们可以从外左联结的结果中猜到的了。
说到这里大家是否对联结查询了解多了?这个原本看来高深的概念一下子就理解了,恍然大悟了吧(呵呵,开玩笑了)?最后给大家讲讲MySQL联结查询中的某些参数的作用:
1.USING (column_list):其作用是为了方便书写联结的多对应关系,大部分情况下USING语句可以用ON语句来代替,如下面例子:
a LEFT JOIN b USING (c1,c2,c3)
,其作用相当于下面语句
a LEFT JOIN b ON a.c1=b.c1 AND a.c2=b.c2 AND a.c3=b.c3
只是用ON来代替会书写比较麻烦而已。
2.NATURAL [LEFT] JOIN:这个句子的作用相当于INNER JOIN,或者是在USING子句中包含了联结的表中所有字段的Left JOIN(左联结)。
3.STRAIGHT_JOIN:由于默认情况下MySQL在进行表的联结的时候会先读入左表,当使用了这个参数后MySQL将会先读入右表,这是个MySQL的内置优化参数,大家应该在特定情况下使用,譬如已经确认右表中的记录数量少,在筛选后能大大提高查询速度。
最后要说的就是,在MySQL5.0以后,运算顺序得到了重视,所以对多表的联结查询可能会错误以子联结查询的方式进行。譬如你需要进行多表联结,因此你输入了下面的联结查询:
SELECT t1.id,t2.id,t3.id
FROM t1,t2
LEFT JOIN t3 ON (t3.id=t1.id)
WHERE t1.id=t2.
但是MySQL并不是这样执行的,其后台的真正执行方式是下面的语句:
SELECT t1.id,t2.id,t3.id
FROM t1,( t2 LEFT JOIN t3 ON (t3.id=t1.id) )
WHERE t1.id=t2.
这并不是我们想要的效果,所以我们需要这样输入:
SELECT t1.id,t2.id,t3.id
FROM (t1,t2)
LEFT JOIN t3 ON (t3.id=t1.id)
WHERE t1.id=t2.
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 mysql 联表查询 的文章

 

随机推荐