假设我有一个这样的表
id | `name` | `aid`
---------------------
1 | sara | 2
2 | jack | 2
3 | chris | 1
4 | dan | 1
6 | sara | 3
7 | jules | 3
8 | jade | 2
现在我想要做的就是向所有与她有同样帮助的人展示sara。基本上,这里的逻辑是采用sara(2和3)的辅助,然后在援助为2和3的情况下进行另一个查询。如果sara是持续会话的用户,我将如何动态地执行此操作
答案 0 :(得分:1)
你可以自己加入桌子:
SELECT t1.id, t1.name, t1.aid, t2.name AS matched_name
FROM myTable t1
JOIN myTable t2
ON t1.aid = t2.aid
WHERE t1.name = 'sara'
AND t1.id != t2.id // to avoid selecting the same row
答案 1 :(得分:0)
您可以尝试这样的事情:
SELECT *
FROM table
WHERE aid
IN (
SELECT aid
FROM table
WHERE name='sara'
)
AND name != 'sara'
它使用子查询来获取sara的id,然后将它们与其他人进行比较。如果要在列表中显示sara,则可以删除最后一部分。
如果你愿意,你也可以事先获得saras ID并使用IN(2,3),但我不确定这是否更好/更有效。