当前位置:  开发笔记 > 编程语言 > 正文

SQL select语句结合不同的表

如何解决《SQLselect语句结合不同的表》经验,为你挑选了1个好方法。

说我有三个表:TableA,TableB,和TableC.每个表都有一列:ColA.

TableA是我的主表,TableA.ColA有一个价值.

我希望检查其中的一个TableB或者TableC也有一个ColA与我相对应的值TableA.ColA.

所以我的发言是:

select count(*) 
 from TableA, TableB, TableC
where ( TableA.ColA = TableB.ColA AND TableA.ColA = "ABC")  
   OR ( TableA.ColA = TableC.ColA AND TableA.ColA = "ABC" )

但这不起作用.

如果我TableB.ColA没有ColA值并且TableC.ColA有值,则返回的结果仍然是0.我应该算一算1.

我的select语句有什么问题?

我的TableA数据:

ColA
-----
ABC

我的TableB数据:

ColA
----
NULL

我的TableC数据:

ColA
----
ABC

因为TableC.ColA并且TableA.ColA具有相同的值,它应该返回我的计数1.但事实并非如此.我的数据库是SAP ASE

谢谢



1> Alex Yu..:

你正在做INNER JOIN,你需要OUTER JOINEXISTS.对于您正在使用的RDBMS,语法会有所不同.

试试这个:

SELECT    COUNT(*)
    FROM
        TableA A
    WHERE
        A.ColA = "Value"
        AND (
            EXISTS(
                SELECT * FROM TableB 
                    WHERE
                        ColA = "Value"
            )
            OR EXISTS(
                SELECT * FROM TableC
                    WHERE
                        ColA = "Value"            
            )
        )

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