当前位置:  开发笔记 > 后端 > 正文

用于找出SQL select不返回任何数据的原因的工具

如何解决《用于找出SQLselect不返回任何数据的原因的工具》经验,为你挑选了1个好方法。

是否有一个工具告诉您(或给您一个提示)为什么特定的select语句不会返回给定数据库中当前数据的任何行.

例如,如果您有以下4个表加入

select * 
from a, b, c, d
where a.b_id = b.id
and b.c_id = c.id
and c.d_id = d.id

如果有满足条件的行a.b_id = b.id也满足b.c_id = c.id的行但没有满足条件的行c.d_id = d.id它会突出显示c.d_id = d.id作为问题.

即它会制动where子句并找出哪些子条件返回true并突出显示那些不返回true的子条件.

它不适用于复杂的查询,但许多select语句是很多表的简单连接.

在创建测试数据以实现应用程序代码的平安或调试实时系统的问题时,这将非常有用.

图形化解释工具(显示实际切换路径的计划)接近但它们显示的信息过多,并且没有突出显示选择图中缺失的链接.

我正在使用postgres,sqllight和mysql,但会对其他数据库/平台的工具如何工作感兴趣.

我也对任何manula技术感兴趣.

还有人有这个问题吗?

如果我写这样的工具,有人会有兴趣吗?



1> Cade Roux..:

我从来没有遇到过这个问题,但我也使用显式连接,所以它通常就像运行部分查询一样简单,直到我发现哪一个不正确地限制了我的结果.

在你的情况下

SELECT *
FROM a -- First run just to here, are there records?
INNER JOIN b
    ON a.b_id = b.id -- Then run just to here, is it OK?
INNER JOIN c
    ON b.c_id = c.id -- Then run just to here, is it OK?
INNER JOIN d
    ON c.d_id = d.id -- Then run just to here, is it OK?

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有