MySQL SELECT GROUP_CONCAT 并在另一个 select 的 WHERE 子句中使用它

MySQL SELECT GROUP_CONCAT and use it in a WHERE clause in another select

我有两个 table。一个包含 account 设置和一个临时 options.

设置table

--------------------------
id   account    category
--------------------------
1    account 1   main
2    account 2   main
3    account 3   general
4    account 4   main
--------------------------

那我还有选择

--------------------------
id   account    option
--------------------------
1    account 1   select
2    account 2   none
--------------------------

我想要实现的是只有 accounts 其中 categorymainoption 不是 select 但也存在于首先 table.

所以在上面的示例数据中,结果应该是 account 2account 4

我已经尝试 GROUP_CONCAT 来自 table 个帐户,然后检查是否有任何帐户在 concated list.

但是没用。它说未知列 ConAccounts 也许我应该使用 WHERE EXISTS? 不好意思这个我不太会:)

使用NOT EXISTS:

SELECT GROUP_CONCAT(s.account) 
FROM settings s
WHERE s.category = 'main'
  AND NOT EXISTS (
    SELECT 1 FROM options o
    WHERE o.account = s.account AND o.option = 'select'
  )