Mysql 在主查询的“in”子句中使用子查询的结果和逗号分隔的列表
我有两张桌子: -一个用户,在名为login的列中包含每个用户的首字母缩写 -另一个任务计划在名为userId的列中包含相同的首字母。 我需要从表users中选择与criteria technician匹配的所有用户,然后我需要从TaskPlaned中选择与这些用户匹配的所有任务 我构建了以下查询:Mysql 在主查询的“in”子句中使用子查询的结果和逗号分隔的列表,mysql,subquery,group-concat,Mysql,Subquery,Group Concat,我有两张桌子: -一个用户,在名为login的列中包含每个用户的首字母缩写 -另一个任务计划在名为userId的列中包含相同的首字母。 我需要从表users中选择与criteria technician匹配的所有用户,然后我需要从TaskPlaned中选择与这些用户匹配的所有任务 我构建了以下查询: SELECT tp.* FROM taskplanned tp WHERE tp.userId IN ( SELECT ( GROUP_CONCAT(
SELECT
tp.*
FROM
taskplanned tp
WHERE
tp.userId IN (
SELECT
(
GROUP_CONCAT(CONCAT('''', login, ''''))
)
FROM
users u
WHERE
u.cis_role LIKE '%technician%'
)
独立运行子查询时,会显示以下内容:
‘BDG’、‘FG’、‘BJ’、‘WDG’、‘NDW’、‘TV’、‘SA’、‘JV’、‘GW’、‘MU’、‘KD’、‘LV’、‘KL’、‘TDW’、‘DK’、‘KDS’、‘PD’、‘WB’
因此,我假设在主查询的in子句中插入这一部分时,它应该可以工作。不幸的是,事实并非如此。我是不是遗漏了什么
如果我从子查询中获取结果并手动将其添加到主查询中,它会像一个符咒一样工作 不需要进行分组。就这样做吧:
SELECT
tp.*
FROM
taskplanned tp
WHERE
tp.userId IN (
SELECT
login
FROM
users u
WHERE
u.cis_role LIKE '%technician%'
)
当这是一对一关系时,更好的方法是加入:
SELECT
tp.*
FROM
taskplanned tp
JOIN users u ON tp.userId = u.login
WHERE u.cis_role LIKE '%technician%'
Mysql
挑选*
从任务计划
WHERE userId IN SELECT login FROM user WHERE cis_角色,如“%technology%”
您不需要分组讨论