我將兩個表上的連接定義爲左外連接,以便所有記錄都從左手錶返回,即使他們在右手錶中沒有記錄。不過,我還需要在右側表格的某個字段中包含where子句,但是......我仍然希望左側表格中的每行記錄都返回一行,即使不符合where子句中的條件。有沒有辦法做到這一點?左外連接和附加的where子句
24
A
回答
20
是,把條件(稱爲謂詞)的連接條件
Select [stuff]
From TableA a
Left Join TableB b
On b.Pk = a.Pk
-- [Put your condition here, like this]
And b.Column = somevalue
10
你只需把謂語爲JOIN
條件。將它放入WHERE
子句可以有效地將您的查詢轉換爲內部連接。
例如:
...
From a
Left Join b on a.id = b.id and b.condition = 'x'
1
SELECT x.fieldA, y.fieldB
FROM x
LEFT OUTER JOIN (select fieldb, fieldc from Y where condition = some_condition)
ON x.fieldc = y.fieldc
0
select *
from table1 t1
left outer join table2 t2 on t1.id = t2.id
where t1.some_field = nvl(t2.some_field, t1.some_field)
UPD: errr ......沒有。這種方式:
select *
from table1 t1
left outer join table2 t2 on t1.id = t2.id
where some_required_value = nvl(t2.some_field, some_required_value)
nvl
是Oracle語法它取代第一個參數與在第二情況下,它是null
(這是常見的外連接)。其他數據庫可以使用ifnull
或3210。
因此,你比較t2.some_field
與您的搜索條件是否已經滿足連接謂詞,但如果沒有,那麼你只返回一行從table1
,因爲some_required_value
相比本身將始終是真實的(除非是null
,但是 - null = null
產量null
,既不true
不false
2
您可以使用
WHERE (right_table.column=value OR right_table.column IS NULL)
這會從表1和表2返回所有行,但只能磨片。表1在表2中沒有對應的行,或者表2中的對應行與您的標準匹配。
相關問題
- 1. SQL - 左外連接和WHERE子句
- 2. 左連接和Where子句
- 3. 使用WHERE子句的左外連接
- 4. LINQ - 左外連接在Where子句
- 5. 左連接與where子句
- 6. COUNT()使用WHERE子句和左連接
- 7. Oracle where子句外連接
- 8. Linq-to-Entities:左外部連接WHERE子句和投影
- 9. 轉換SQL查詢Linq查詢左外連接和where子句
- 10. 帶左連接表的Where子句
- 11. 帶有左連接的MySQL WHERE子句
- 12. 轉換左外連接到WHERE語句
- 13. 左外連接+ where子句意外結果
- 14. SQL左連接與where子句
- 15. 帶有左連接,Where子句和Sum()的SQL語句?
- 16. MySQL左外連接where子句 - 返回不匹配的行
- 17. 用於左外連接的SQL where子句
- 18. LINQ to Entities - 左外連接與條件where子句
- 19. MySQL的左連接用SUM和Where子句返回NULL
- 20. SQL左外部連接使用where子句減少了左外部連接的結果
- 21. SQL左外連接子句放置
- 22. 如何添加一個where子句與左連接
- 23. Laravel左連接將where子句添加到右表
- 24. LINQ to SQL - 如何將where子句添加到左連接?
- 25. mysql左連接問題與SUM和WHERE子句
- 26. LINQ與多個左連接和where子句
- 27. MYSQL查詢使用左連接和where IN子句
- 28. 計數與兩個左連接和where子句
- 29. 內連接和where()子句的性能?
- 30. MySQL連接表WHERE子句
這不適用於ECC6 – 2014-04-14 11:27:18