2016-11-16 9 views
1

where句に一致しないレコードを表示する必要があります。where句に一致しない表示レコード

例 - select * from citytable where city in ('aa','bb','cc', 'dd','ee');

のみaabbccがテーブルに存在する、dd & eeがテーブルに存在しません。しかし、私はまだdd & eeと表示する必要があります。

答えて

0

に存在するレコードが存在しないので、「DD」と「E-E」行の列は常にnullになることを覚えておいてください。 IN条件は、INリストの一意の(別個の)値を含むテーブルへの内部結合と同じです。あなたが望むのは外部結合です。 INリストの代わりにテーブルが必要です。以下のソリューションでは、この「ヘルパー」テーブルをどのように作成するかを示します。他にもいくつかの方法がありますが、これはちょうどアイデアを示しています。

select deptno, ename from emp where deptno in (10, 50, 80); 

DEPTNO ENAME 
------ ------ 
10  CLARK 
10  KING 
10  MILLER 


with h (deptno) as (
    select 10 from dual union all 
    select 50 from dual union all 
    select 80 from dual 
) 
select h.deptno, e.ename 
from h left outer join emp e 
on h.deptno = e.deptno 
; 

DEPTNO ENAME 
------ ------ 
10  CLARK 
10  KING 
10  MILLER 
50 
80 
0

出力をどのように見たいかわかりません。 city = 'ee'のデータがない場合は、正確に何を表示しますか?このようなもの?

SELECT * FROM 
(SELECT key AS A_key, one AS A_one, two AS A_two FROM cityTable WHERE one='aa') AS A 
JOIN 
(SELECT key AS E_key, one AS E_one, two AS E_two FROM cityTable WHERE one='ee') AS E 
ON A_key=E_key 
...etc. 

編集:または多分これはそれです:

+0

明確にする必要があり続き--- ************************************ ********* CityTable \t \t 市\t国 AA \t AA BB \t BB CC \t CC ******************* ************************* \t 私のクエリ - select * from citytable都市 '(' aa '、' bb '、' cc ' 、 'dd'、 'ee'); \t ****************************************** \t 出力Required- \t 市 DD \t EE \t \t ************************************* ******** – Kalz

+0

typoのためのお詫び.....私の出力は、どこの節でどのレコードも返さなかった値でなければなりません.......それはdd&eeだけです – Kalz

+0

'SELECT city FROM (SELECT city、count(*)as city cから都市をGROUP BY GROUP)どこc = 0'ですか? –

0

私はあなたが'dd' AMD 'ee'がテーブルに存在しないが、あなたがunion allを使用してそれを達成することができますので、あなたはまだそれを必要と理解しています。しかし、あなたは、おそらくこのような何かを探しているあなたのcitytable

SELECT ct.col1 AS city, ct.col2.....<all columns of your table> 
    from citytable ct 
    where city in ('aa','bb','cc') 
    UNION ALL 
    select 'dd' as city,null ,null.....<nulls as many times as the number of columns of your table> 
    from citytable ct1 
    UNION ALL 
    select 'ee' as city,null ,null.....<nulls as many times as the number of columns of your table> 
    from citytable ct2 
関連する問題