我不确定这是最好的题目,但我有这样的答案:
db:用户名
id, username, search_via, value_1
1, Rita, Sue, 1
2, Bob, Sue, 2
3, Bill, Sue, 3
4, Jim, Bill, 4
5, Brian, Bob, 5我希望能够搜索到search_via为‘so’的所有用户,所以很明显我已经做到了:
SELECT * FROM usernames WHERE search_via = 'Sue':
1, Rita, Sue, 1
2, Bob, Sue, 2
3, Bill, Sue, 3然后,我希望从这些结果中还返回任何显示为search_via的用户名,因此在本例中,它将是'Brian',因为它是作为‘Sue’的用户名出现的...but的search_via值:
5, Brian, Bob, 5..so我的完整结果应该是:
1, Rita, Sue, 1
2, Bob, Sue, 2
3, Bill, Sue, 3
5, Brian, Bob, 5我的第一个search_via名字是...because,在Sue的结果中,有Bob,他是‘search_via’的search_via值。
...我真的很难解释这个,所以我完全不知道如何去做?!?
有什么想法吗?
发布于 2018-11-14 21:32:57
为了只获取二级层次结构的结果,我们可以简单地使用子查询来获取where为search_via = 'Sue'的所有username值。然后,我们也可以使用WHERE search_via IN (..)来获得二级层次结构结果。
SELECT *
FROM usernames
WHERE search_via = 'Sue' OR
search_via IN (
SELECT username
FROM usernames
WHERE search_via = 'Sue'
) https://stackoverflow.com/questions/53301411
复制相似问题