有表:groups、targets和连接表groups_targets。
团体有目标,例如:
- 组#1具有性别目标、年龄目标和城市目标
- 第2组有一个性别目标
- 第三组有一个城市和性别目标。
- 第4组有一个年龄和城市目标。
我的请求没有返回任何内容
SELECT DISTINCT groups.*
FROM groups
INNER JOIN groups_targets ON groups_targets.group_id = groups.id
INNER JOIN targets ON targets.id = groups_targets.target_id
WHERE groups.user_id = 1
AND (targets.name = 'age' AND targets.name = 'gender')
字符串
如何找到既有性别又有年龄的组,只有组#1。
3条答案
按热度按时间yzxexxkh1#
(targets.name = 'age' AND targets.name = 'gender')
将始终返回false,targets.name不能同时有两个值,使用OR
而不是AND
:字符串
如果两个目标都应该在那里,我们可以使用
GROUP BY
和HAVING
子句以及CASE
子句来专门选择包含两个目标的组:型
ojsjcaue2#
要获取目标为
age
的所有组,请在target name
上使用具有适当过滤器的连接查询字符串
对目标
gender
使用类似的查询型
要获得具有两个目标的组,请使用前面查询的
intersect
,即两个查询中返回的group_id
型
d7v8vwbk3#
要查找同时具有性别和年龄目标的组,您应该使用不同的方法,例如将EXISTS子句与子查询一起使用。
字符串
该查询应该给予您想要的结果,即查找同时具有性别和年龄目标的组。
希望这对你有帮助。