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
其中 category
是 main
而 option
不是 select
但也存在于首先 table.
所以在上面的示例数据中,结果应该是 account 2
和 account 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'
)
我有两个 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
其中 category
是 main
而 option
不是 select
但也存在于首先 table.
所以在上面的示例数据中,结果应该是 account 2
和 account 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'
)