除了X"所以除了X"在select语句中,一次测试多个字段

时间:2018-06-14 17:56:10

标签: sql

所以在做了一个非常大的select语句之后,我想检查是否有一种灵巧的方法将多个表上配对的所有字段拉到报表中,同时测试一大组空字段以删除空记录。比方说,我将表与表b配对,与表c配对。我想要几乎所有的记录,除了a.something,b.somthing和几个c.somethings。

我还想确定c中的所有字段是否为空,排除记录。 (嗯......除了索引之外)

这样做有好办法吗?我最终按字段建立了一个较大的报告字段,但它是A:非常乏味而且B:如果我遇到一个更大的项目,就不会扩展。

SELECT * <except for c.4, c.5. c.6, a.3, a.4, b.2>
    FROM a,b,c
        LEFT JOIN b ON a.indexA = b.indexA
        LEFT JOIN c ON b.indexB = c.indexB
            WHERE a.1 is not null
            AND b.1 is not null
            and c.1 is not null
            and c.2 is not null
            and c.3 is not null
            and a.2 is > 0
            and b.2 = 'Test'

随意不要使用我的例子。

1 个答案:

答案 0 :(得分:2)

您实际上可以执行多个连接条件:

SELECT *
FROM a
    LEFT JOIN b ON a.indexA = b.indexA 
        and b.1 is not null
        and b.2 = 'Test'
    LEFT JOIN c ON b.indexB = c.indexB 
        and c.1 is not null
        and c.2 is not null
        and c.3 is not null
    WHERE a.1 is not null
        and a.2 is > 0

此外,我非常确定您在指定left join语法时,列出了FROM之后的所有表格。

我不确定这是否会改变性能。