2017-01-02 160 views
0

我有这个表返回记录

Tbllang:L-NAME

Tbldata:ID,标题的parentid,LNAME

样本数据:

Tbllang: en nl ru de

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

Parentid为0或等于id。基本上我有多种语言的记录,这是可以的。

对于Samuel,我已经en和de了。我想返回ru和nl。对于埃琳娜,我想要nl,ru和de。

下面的SQL语句失败:

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

我在想什么?

+0

您使用的是哪个版本的SQL行的行? –

+0

我正在使用Mysql mariadb – user7366786

+0

您应该添加一个最小示例数据。 – McNets

回答

0

好像你需要使用[not] exists操作:

SELECT lname 
FROM tbllange l 
WHERE NOT EXISTS (SELECT * 
        FROM tbldata d 
        WHERE l.lname = d.lname AND d.id = 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