Q
Problem solve Get help with specific problems with your technologies, process and projects.

# Outer join with a condition

Is there a way to emulate the functionality of this without a subquery:

```SELECT Id, Name
FROM Table1
WHERE Table1.Id NOT IN
( SELECT Id
FROM Table2
WHERE Flag=2 )```

I know without the where clause on Table2, this can be done with an outer/left join... However, the where clause on the Flag is really confusing me.

Let's create some test data to try our queries on:

```Table1             Table2
Id  Name           Id  Flag
91  Curly          91   2
92  Larry          92   1
93  Moe            93  null
94  Shemp
95  Joe
96  Curly Joe```

Notice that there is:

• a matching row where Flag is 2 (Curly)
• a matching row where Flag is not 2 (Larry)
• a matching row where Flag is null (Moe)
• several non-matching rows (Shemp, Joe, and Curly Joe)

Your original query has this subquery:

```select Id
from Table2
where Flag=2```

This returns only 91 (Curly). Your main query therefore returns everybody except Curly. This what we will try to do without using a subquery.

Let's take a look at the approach you suggested, a LEFT OUTER join, but let's omit the Flag test initially:

```select Table1.Id as Id1, Name
, Table2.Id as Id2, Flag
from Table1
left outer
join Table2
on Table1.Id = Table2.Id

Id1 Name       Id2 Flag
91 Curly       91   2
92 Larry       92   1
93 Moe         93  null
94 Shemp      null null
95 Joe        null null
96 Curly Joe  null null```

Notice that columns from both Table1 and Table2 are in the SELECT list, so that we can see actual result set values as returned by the LEFT OUTER join. As you may know, in unmatched rows, columns from the right table are set to null. We can tell which rows had a match by looking at Id2, but not by looking at Flag, because Moe has a null stored in Table2, whereas Shemp, Joe, and Curly Joe don't.

Now let's add the Flag test to the ON condition:

```select Table1.Id as Id1, Name
, Table2.Id as Id2, Flag
from Table1
left outer
join Table2
on Table1.Id = Table2.Id
and             Flag <> 2

Id1 Name       Id2 Flag
91 Curly      null null
92 Larry       92   1
93 Moe        null null
94 Shemp      null null
95 Joe        null null
96 Curly Joe  null null```

Wait a second! How can this be? Why is Curly returned?

The answer is that in a LEFT OUTER join, each row of the left table must be returned, regardless of any ON conditions that may or may not bring in matching rows from the other table.

If this is confusing, let's walk through an example. Id1=91 (Curly) has a matching Id2, but its Flag is 2, so the ON conditions are not satisfied. But it's a LEFT OUTER Join, so Curly is returned anyway, with columns from Table2 set to null. Id2 is null whenever the ON conditions were not satisfied.

The solution is to move the Flag test to the WHERE clause, and allow for non-matching rows as well:

```select Table1.Id as Id1, Name
, Table2.Id as Id2, Flag
from Table1
left outer
join Table2
on Table1.Id = Table2.Id
where Flag is null
or Flag <> 2

Id1 Name       Id2 Flag
92 Larry       92   1
93 Moe         93  null
94 Shemp      null null
95 Joe        null null
96 Curly Joe  null null```

Now we have the results we want -- everybody except Curly -- without needing a subquery.

(This is for MySQL, right?)

#### Start the conversation

Send me notifications when other members comment.

## SearchDataManagement

• ### Ascend boosts enterprise data governance with data lineage

The new capabilities of Ascend Govern bring data lineage and enterprise data governance as well as the ability to try and figure ...

• ### The business benefits of enterprise data governance and MDM

Data leaders from prominent large organizations provide insights into data governance best practices and benefits, at ...

• ### How data governance and data management work together

Data governance is an important part of data management. These recommendations will help build a strong complementary ...

• ### SAS analytics platform benefiting from AI investment

Fueled by SAS' investment in AI and augmented intelligence features, the long-established vendor strengthened its BI platform ...

• ### Trends and top use cases for streaming data analytics

As more enterprises adopt real-time analytics, new infrastructure and best practices are appearing. Here are some trending ...

• ### COVID-19 effect on analytics software development an unknown

With COVID-19 forcing software engineers to work remotely rather than together in teams, they'll need to find new ways of ...

## SearchSAP

• ### SAP S/4HANA migration: Critical advice for moving off ECC

With the end of SAP ECC support looming in 2027, organizations must make some tough decisions. Here's a look at your choices.

• ### How to pick a SuccessFactors implementation partner

Selecting the right SuccessFactors implementation partner is a critical step in the journey to deploying the system. Check out ...

• ### 6 critical steps of a successful SAP S/4HANA migration

A successful S/4HANA project starts with knowing why your organization should even make the move, then nailing down whether S/4 ...

## SearchSQLServer

• ### SQL Server database design best practices and tips for DBAs

Good database design is a must to meet processing needs in SQL Server systems. In a webinar, consultant Koen Verbeeck offered ...

• ### SQL Server in Azure database choices and what they offer users

SQL Server databases can be moved to the Azure cloud in several different ways. Here's what you'll get from each of the options ...

• ### Using a LEFT OUTER JOIN vs. RIGHT OUTER JOIN in SQL

In this book excerpt, you'll learn LEFT OUTER JOIN vs. RIGHT OUTER JOIN techniques and find various examples for creating SQL ...

## TheServerSide.com

• ### 5 Jenkins alternatives for Java developers

In need of an alternative to Jenkins as part of a CI/CD environment? Consider options from Atlassian, GitLab, Spinnaker, ...

• ### Work from home tips from distributed development teams during COVID-19

The distributed dev community often works remotely. Pick up these approaches, such as an asynchronous schedule and video ...

• ### How to refactor the God object antipattern

Loose coupling can inadvertently create a God object problem in an object-oriented software system. Here's how to get rid of the ...

## SearchDataCenter

• ### Tech giants aim supercomputers, clouds at finding a COVID-19 cure

The new COVID-19 HPC consortium comprised of tech giants, national labs and academia are using supercomputers and clouds to speed...

• ### Top vendor SDDC certification programs for admins

If you decide to grow your knowledge of software-defined data center technologies, VMware, Nuage Networks and Microsoft offer ...

• ### Build up your knowledge of leaf-spine network technology

As organizations deal with challenges of single tree path networks, many admins are considering leaf-spine architectures. Learn ...

## SearchContentManagement

• ### Vendors offer free remote work technology for telecommuting

It's more than a marketing ploy: Cloud technology vendors, seeing their own issues enabling remote work, extend paid products to ...

• ### How businesses should deal with enterprise search issues

Enterprise search issues frequently complicate user experience with ECM systems. While users may face many problems, they also ...

• ### Box, Dropbox shore up clouds; Box-Microsoft integrations go live

Online document collaboration platforms Box and Dropbox shore up cloud bandwidth, security and customer support as remote work ...

## SearchHRSoftware

• ### Farmers Insurance piloting human-like VR training

VR training has become a best practice at Farmers Insurance Exchange. Its claims adjusters are being exposed to more scenarios ...

• ### Virtual hiring, avoiding layoffs part of HR's pandemic response

In the face of a pandemic, many firms are trying to avoid layoffs and even hire. They are using virtual tools, including testing ...

• ### Transformational HR in 2020: 7 strategies for agility and tech mastery

CHROs and their teams must grow their people, business and technology skills as they focus on curating the employee experience. ...

Close