Advanced Techniques for Combining SQL SELECT Statements: Deep Analysis of UNION and CASE Conditional Statements

Nov 21, 2025 · Programming · 11 views · 7.8

Keywords: SQL Queries | Result Set Combination | UNION Operator | CASE Statements | Performance Optimization | Database Development

Abstract: This paper provides an in-depth exploration of two core techniques for merging multiple SELECT statement result sets in SQL. Through detailed analysis of UNION operator and CASE conditional statement applications, combined with specific code examples, it systematically explains how to efficiently integrate data results under complex query conditions. Starting from basic concepts and progressing to performance optimization and conditional processing strategies in practical applications, the article offers comprehensive technical guidance for database developers.

Overview of SQL Result Set Combination Techniques

In database query operations, there is often a need to merge result sets from multiple SELECT statements into a single output. This requirement is particularly common in scenarios such as data report generation, complex business logic processing, and data analysis. Based on actual development cases, this article systematically analyzes two mainstream combination techniques: the UNION operator and CASE conditional statements.

In-depth Application of UNION Operator

The UNION operator is a core tool in SQL standards for merging result sets from multiple SELECT statements. Its basic syntax structure is as follows:

SELECT column1, column2 FROM table1 WHERE condition1
UNION
SELECT column1, column2 FROM table2 WHERE condition2

In practical applications, the UNION operator executes the following key steps: first, it individually executes each SELECT statement to generate intermediate result sets, then merges these result sets and automatically removes duplicate records. This mechanism ensures data consistency and integrity.

Consider the following specific application scenario: suppose we need to filter two different types of records from a work items table and add corresponding status identifiers. The original separate queries are as follows:

SELECT 'Test1', * FROM TABLE WHERE CCC='D' AND DDD='X'
SELECT 'Test2', * FROM TABLE WHERE CCC<>'D' AND DDD='X'

The merged query statement using UNION operator becomes:

SELECT 'Test1', * FROM TABLE 
WHERE CCC='D' AND DDD='X' AND EXISTS(SELECT 1 FROM ...)
UNION
SELECT 'Test2', * FROM TABLE 
WHERE CCC<>'D' AND DDD='X' AND EXISTS(SELECT 1 FROM ...)

Performance Considerations and Optimization Strategies

Although the UNION solution is logically clear, it has potential performance issues. Since it requires multiple scans of the same data table, it may lead to decreased query efficiency in large data volume scenarios. The database optimizer needs to develop execution plans for each SELECT clause separately, increasing system overhead.

For performance optimization, consider the following strategies:

Flexible Application of CASE Conditional Statements

As an alternative to the UNION solution, CASE conditional statements provide a single table scan solution. The core idea is to use conditional judgments in the SELECT statement to dynamically generate status identifiers.

The basic syntax structure is as follows:

SELECT 
    CASE 
        WHEN condition1 THEN 'Value1'
        WHEN condition2 THEN 'Value2'
        ELSE 'DefaultValue'
    END AS status_column,
    other_columns
FROM table_name
WHERE condition1 OR condition2

Refactoring the previous example into a CASE solution:

SELECT 
    CASE 
        WHEN CCC='D' AND DDD='X' AND EXISTS(SELECT 1 FROM ...) THEN 'Test1'
        WHEN CCC<>'D' AND DDD='X' AND EXISTS(SELECT 1 FROM ...) THEN 'Test2'
    END AS test_type,
    *
FROM TABLE 
WHERE (CCC='D' AND DDD='X' AND EXISTS(SELECT 1 FROM ...)) OR
      (CCC<>'D' AND DDD='X' AND EXISTS(SELECT 1 FROM ...))

Handling Condition Duplication Issues

A notable characteristic of the CASE solution is the need to repeat the same conditional judgment logic in both SELECT and WHERE clauses. Although this duplication increases code volume, it ensures query logic consistency.

In actual development, condition duplication can be managed through the following approaches:

Practical Business Scenario Applications

Consider a real work item management system query requirement. The original query is used to filter work items with specific timestamps and conditions:

SELECT Status, * FROM WorkItems t1
WHERE EXISTS (SELECT 1 FROM workitems t2 
              WHERE t1.TextField01=t2.TextField01 AND (BoolField05=1))
AND TimeStamp=(SELECT MAX(t2.TimeStamp) FROM workitems t2 
               WHERE t2.TextField01=t1.TextField01) 
AND TimeStamp>'2009-02-12 18:00:00'

Now we need to extend this query to simultaneously include records with deleted status:

SELECT 
    CASE 
        WHEN NOT (BoolField05=1) THEN 'DELETED'
        ELSE Status
    END AS item_status,
    *
FROM WorkItems t1
WHERE EXISTS (SELECT 1 FROM workitems t2 
              WHERE t1.TextField01=t2.TextField01 AND (BoolField05=1))
AND TimeStamp=(SELECT MAX(t2.TimeStamp) FROM workitems t2 
               WHERE t2.TextField01=t1.TextField01) 
AND TimeStamp>'2009-02-12 18:00:00'
AND (Status IS NOT NULL OR NOT (BoolField05=1))

Technical Selection Recommendations

When choosing a combination solution, the following factors need comprehensive consideration:

UNION Solution Applicable Scenarios:

CASE Solution Applicable Scenarios:

Advanced Techniques and Best Practices

In actual project development, the following best practices are recommended:

1. Performance Testing First: For critical queries, always conduct detailed performance testing to compare the execution efficiency of different solutions.

2. Code Readability: Regardless of the chosen solution, ensure the code has good readability and maintainability.

3. Error Handling: Consider all possible scenarios in CASE statements to avoid unhandled NULL values.

4. Index Optimization: Create appropriate indexes based on actual query patterns to improve query performance.

By deeply understanding the characteristics and applicable scenarios of both UNION and CASE technical solutions, developers can choose the most suitable implementation method according to specific business requirements, thereby building efficient and reliable database query systems.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.