0

同じ構造を持つ2つのテーブルtableAとtableBがあります。

rowid: big int
name:character variying
enabled: boolean

これら2つのテーブルで外部結合を行いました

select tableA.rowid, tableA.name, tableB.enabled
from tableA 
left outer join
tableB
on tableA.rowid = tableB.rowid

tableA には、有効な列がすべて true である行が含まれていますが、tableB には、無効にする必要がある tableA の行の一部が含まれています (enalbed 列は false)。

上記の結合を使用すると、結果テーブルの一致する行の有効なフィールドが false に設定されますが、残りの行は true に設定されません。有効な列は単に空です (tableB に一致する行が見つかりません)。

私の質問は、tableB に一致する行がない場合は tableA.enabled を使用し、そうでない場合は tableB.enabled を使用することを外部結合に伝える方法はありますか?

または、これを行うための他のより良い方法はありますか?

これには PostgreSQL を使用します。他の SQL タイプのアイデアも歓迎します。

どうもありがとう

4

2 に答える 2

4

COALESCEを探しています:

SELECT
    tableA.rowid,
    tableA.name,
    COALESCE(tableB.enabled, tableA.enabled) AS enabled
FROM tableA 
LEFT OUTER JOIN tableB
ON tableA.rowid = tableB.rowid
于 2012-08-12T08:29:05.177 に答える
1
select tableA.rowid, tableA.name, ISNULL(tableB.enabled, tableA.enabled) as Enabled
from tableA 
left outer join
tableB
on tableA.rowid = tableB.rowid
于 2012-08-12T08:29:52.923 に答える