[英]How to select rows that don't have value in a second table
基本上我有一个主表(帐户)和一个元表(accounts_meta)...元表如下所示:
id | account_id | meta_key | meta_value
我想要做的只是在accounts_meta表中选择没有'referrer_paid'作为行的帐户...
这是我到目前为止的代码......
SELECT a.* FROM accounts AS a
LEFT JOIN accounts_meta AS am ON a.id = am.account_id AND am.meta_key != 'referrer_paid'
WHERE a.account_referrer != ''
GROUP BY a.id
希望我有意义。 我究竟做错了什么?
SELECT *
FROM accounts
WHERE id NOT IN ( select DISTINCT account_id
from `account_meta_table`
where meta_key != 'referrer_paid'
);
来自@lexu的微小变化:
\n 选择 * \n 来自帐户 \n WHERE id NOT IN(选择account_id \n 来自`account_meta_table` \n 其中meta_key ='referrer_paid'\n );\n
SELECT a.* FROM accounts AS a
LEFT JOIN accounts_meta AS am ON a.id = am.account_id AND am.meta_key = 'referrer_paid'
WHERE a.account_referrer != ''
AND am.account_id IS NULL
你不需要group by,因为left-join-is-null不会产生重复的帐户行
编辑: duh,将am.meta_key != 'referrer_paid'
改为am.meta_key != 'referrer_paid'
改为am.meta_key = 'referrer_paid'
这就是你想要的。 如果连接的行不匹配,则返回NULL,并且只接受NULL行
SELECT a。* FROM accounts as a LEFT JOIN accounts_meta AS am ON a.id = am.account_id AND am.meta_key!='referrer_paid'WHERE ISNULL(am.account_referrer)GROUP BY a.id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.