为什么我在select语句中得到超过1行?

J. *_*dam -1 sql oracle

我有一张桌子:

表:Berichten列:ID,Bericht,Bericht,Klant_ID,Product_ID,Datum

我在其中有一行,并希望用与列中相同的klant_id向用户显示它,当我运行以下语句时,我得到10行

 select 
    b.ID,
    b.Product_id ,
    b.Klant_id,
    b.onderwerp
 from BERICHTEN b, KLANTEN k 
 WHERE b.klant_id = (select ID from klanten where email = 'joris@am.nl')
Run Code Online (Sandbox Code Playgroud)

知道我为什么得到10行而不是1行?

Yog*_*rma 6

你只是这样CROSS JOINJOIN:

select b.ID, b.Product_id, b.Klant_id, b.onderwerp
from BERICHTEN b inner join 
     KLANTEN k 
     on b.klant_id = k.id
where k.email = 'joris@am.nl';
Run Code Online (Sandbox Code Playgroud)

但是,使用时可能更容易理解exists:

select b.ID, b.Product_id, b.Klant_id, b.onderwerp
from BERICHTEN b
where exists (select 1 from KLANTEN k where k.id = b.klant_id and k.email = 'joris@am.nl');
Run Code Online (Sandbox Code Playgroud)