求一条关联SQL的写法?

wu52398 2019-06-21 06:22:17





以上两张表分别A,B

想找出A表中所有authorid为8的记录,并在每条记录结果栏中关联显示出B表内的数据

select `a`.`id`,`a`.`sourcename`,`a`.`authorid`, b.id AS b__id,b.uid AS b__uid,b.cid AS b__cid from `ts_wffiles` a LEFT JOIN `ts_checkin` b on a.id=b.cid where a.authorid=8 GROUP BY id order by id desc

得出的结果是:


我想要得到的结果是红色框中的记录应该为上个图中红色框内的记录,也就是取出B表中ID为10的记录,这里取出的是ID为9
但是如果我在WHERE后面连接一个and b.uid=8,却又把left join取出来的A表记录过滤了下,我想保持A表中的所有记录的同时把B表中符合uid=8的记录取出来。


求SQL写法
...全文
145 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
YYYYolanda 2019-07-01
  • 打赏
  • 举报
回复
你用 LEFT JOIN ,能查出a表的所有数据。而a.id=b.cid 且GROUP BY id(理应为GROUP BY a.id),说明你将表b的多条cid相同的数据group by 分组了。分组留下的一条数据,官方给的回复是ANY_VALUE()。也就是说,分组后返回的数据没法指定。
如果你非要指定返回哪一条数据,只能先处理表b的分组。

表b分组选取id大的为返回数据
(SELECT max(id) FROM `ts_checkin`  GROUP BY cid)


表b返回只剩分组中id大的数据的完整表,用此表代替`ts_checkin`
(SELECT * FROM `ts_checkin`  WHERE id IN (SELECT max(id) FROM `ts_checkin`  GROUP BY cid))


完整的语句
select `a`.`id`,`a`.`sourcename`,`a`.`authorid`, b.id AS b__id,b.uid AS b__uid,b.cid AS b__cid from `ts_wffiles` AS a LEFT JOIN (SELECT * FROM `ts_checkin`  WHERE id IN (SELECT max(id) FROM `ts_checkin`  GROUP BY cid)) AS b on a.id=b.cid where a.authorid=8 GROUP BY id order by id desc


以上方法,只能返回表b的id大的数据。如果表b的cid参数相同的数据很多,分组之后,你想返回任意一条数据,那你就另外处理表b的分组。越复杂对性能越有影响。
【多变量输入超前多步预测】基于CNN-BiLSTM的光伏功率预测研究(Matlab代码实现)内容概要:本文介绍了基于CNN-BiLSTM模型的多变量输入超前多步光伏功率预测方法,并提供了Matlab代码实现。该研究结合卷积神经网络(CNN)强大的特征提取能力与双向长短期记忆网络(BiLSTM)对时间序列前后依赖关系的捕捉能力,构建了一个高效的深度学习预测模型。模型输入包含多个影响光伏发电的气象与环境变量,能够实现对未来多个时间步长的光伏功率进行精确预测,适用于复杂多变的实际应用场景。文中详细阐述了数据预处理、模型结构设计、训练流程及实验验证过程,展示了该方法相较于传统模型在预测精度和稳定性方面的优势。; 适合人群:具备一定机器学习和深度学习基础,熟悉Matlab编程,从事新能源预测、电力系统分析或相关领域研究的研发人员与高校研究生。; 使用场景及目标:①应用于光伏电站功率预测系统,提升电网调度的准确性与稳定性;②为可再生能源并网管理、能量存储规划及电力市场交易提供可靠的数据支持;③作为深度学习在时间序列多步预测中的典型案例,用于科研复现与教学参考。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注数据归一化、CNN特征提取层设计、BiLSTM时序建模及多步预测策略的实现细节,同时可尝试引入更多外部变量或优化网络结构以进一步提升预测性能。

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧