繁体   English   中英

如何从同一列中选择两个值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM