如何从一个表中选择具有同一表中其他行的特定id的行

时间:2014-08-07 12:51:47

标签: php mysql

假设我有一个这样的表

 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是持续会话的用户,我将如何动态地执行此操作

2 个答案:

答案 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),但我不确定这是否更好/更有效。