[英]How to select by two values from same column?
我有一个简单的数据库,其中包含用户及其爱好。 关系是多对多的,所以一共有三个表。 我需要按两个特定的爱好选择所有用户。 例如,他们应该同时做足球和篮球。
我是 SQL 新手,并认为 AND 运算符可以解决它,但它对我不起作用。 我的查询是
SELECT u.name
FROM hobby h
INNER JOIN user_hobby uh on h.id = uh.hobby_id
INNER JOIN user u on u.id = uh.user_id
WHERE h.name = 'Basketball' AND h.name = 'Football';
我尝试了几种变化 - 没有结果。 我知道这可能很容易,很抱歉问这种类型的问题,但只是没有在互联网上找到我的案例的合适例子,所以将感谢任何帮助!
如果要选择所有打篮球或踢足球的用户:
SELECT u.name
FROM hobby h
INNER JOIN user_hobby uh on h.id = uh.hobby_id
INNER JOIN user u on u.id = uh.user_id
WHERE h.name IN('Basketball', 'Football');
如果要选择所有既打篮球又打足球的用户:
SELECT N.name
FROM
(
SELECT u.name, h.name AS 'Hobby_Name', COUNT(*) AS 'Hobby_Count'
FROM hobby h
JOIN user_hobby uh on h.id = uh.hobby_id
JOIN user u on u.id = uh.user_id
WHERE h.name IN('Basketball', 'Football')
GROUP BY u.name, h.name
) N
GROUP BY N.name
HAVING COUNT(*) = 2
用这个。 它对我有用,我经常使用它。
SELECT u.name
FROM hobby h
INNER JOIN user_hobby uh on h.id = uh.hobby_id
INNER JOIN user u on u.id = uh.user_id
WHERE h.name in ('Basketball', 'Football');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.