返回在第二个自引用表中找不到的记录

时间:2017-01-02 20:30:45

标签: sql mariadb

我有这张桌子

Tbllang:lname

Tbldata:id,title,parentid,lname

示例数据:

Tbllang: 恩 NL RU 德

Tbldata 1 samuel 0 en 2 samuelde 1 de 3 elena 0 en

Parentid为0或等于id。基本上我有多种语言的相同记录,没关系。

对撒母耳来说,我已经和已经去过了。我想要返回ru和nl。对于埃琳娜,我想要nl,ru和de。

以下sql语句失败:

Select lname from tbllang where tbllang.lname<>tbldata.lname and (id=1 and parentid=1)

我缺少什么?

2 个答案:

答案 0 :(得分:0)

好像你需要使用[not] exists运算符:

SELECT lname
FROM   tbllange l
WHERE  NOT EXISTS (SELECT *
                   FROM   tbldata d
                   WHERE  l.lname = d.lname AND d.id = 1)

答案 1 :(得分:0)

我希望tbllang有一个ID列,它是tbldata中的外键但你没有显示一个。如果有,那么你可以进行反半连接。

select lname from tblland a left join tbldata b on a.id = b.parentid where b.parentID is null

这将为你提供tbllang中tbldata中没有行的所有行