baidu5555 2018-01-28 09:21 采纳率: 0%
浏览 1711
已采纳

关于MySql 查询语句的问题 LEFT JOIN

我有一个结果集,然后我想要另一张表对着我的查询的结果有的显示内容,没有的显示空。
SELECT E.classname,E.classid,S.title,S.kjdata FROM phome_ecms_ssc S, phome_enewsclass E,(SELECT id FROM phome_ecms_ssc where classid = 26 and kjdate > UNIX_TIMESTAMP(NOW()) ORDER BY kjdate LIMIT 1) B where S.classid = 26 and S.classid = E.classid and S.id <= B.id ORDER BY S.id DESC LIMIT 10
这一段是我的的结果
phome_ecms_yuce
这张是我要关联的表

我真的没有用过 JOIN 最终我写的是

SELECT E.classname,E.classid,S.title,S.kjdata FROM phome_ecms_ssc S, phome_enewsclass E,(SELECT id FROM phome_ecms_ssc where classid = 26 and kjdate > UNIX_TIMESTAMP(NOW()) ORDER BY kjdate LIMIT 1) B where S.classid = 26 and S.classid = E.classid and S.id <= B.id ORDER BY S.id DESC LIMIT 10
LEFT JOIN phome_ecms_yuce Y ON S.classid = Y.wanfaid and S.title = Y.qihao and Y.jihuaid = 1

这个写法是错误的,求大神指点

  • 写回答

13条回答 默认 最新

  • qq_39690665 2018-01-28 17:25
    关注

    left join是不能放在where后面的,如果是想要join前面生成的结果集的话,需要将生成结果集再join

    select * from (SELECT E.classname,E.classid,S.title,S.kjdata FROM phome_ecms_ssc S, phome_enewsclass E,(SELECT id FROM phome_ecms_ssc where classid = 26 and kjdate > UNIX_TIMESTAMP(NOW()) ORDER BY kjdate LIMIT 1) B where S.classid = 26 and S.classid = E.classid and S.id <= B.id ORDER BY S.id DESC LIMIT 10 ) ls left join phome_ecms_yuce Y ON Y.wanfaid=ls.classid and Y.qihao=ls.title and Y.jihuaid = 1

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(12条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部