baidu5555 2018-01-28 17:21 采纳率: 100%
浏览 1710
已采纳

关于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-29 01: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条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵