MySQL在表中为同一用户的不同配置文件查找交叉

时间:2010-10-17 09:20:37

标签: sql mysql

我有两个表,一个是表Profile,另一个是表Profile_location(存储配置文件和位置的关系)。问题:

用户可以拥有多个配置文件,每个配置文件都有不同的位置。我想找到给定用户的每个配置文件之间的交叉位置。换句话说,评估给定用户的所有配置文件并找到不唯一的位置。

非常感谢快速帮助。

用户ID和位置ID来自表用户和位置。

Table Profile:          Profile_ID, Profile_Name, User_ID, Other details ...
Table Profile_Location: ProLoc_ID, Location_ID(FK), Profile_ID(FK)
Table Users:            User_ID, Username, etc.
Table Location:         Location_ID, Location_Name, etc.

1 个答案:

答案 0 :(得分:0)

SELECT
  l.Location_ID,
  l.Location_Name
FROM
  Location l
WHERE
  EXISTS (
      SELECT 1 
        FROM Profile p
  INNER JOIN Profile_Location pl ON pl.Profile_ID = p.Profile_ID
             AND pl.Location_ID = l.Location_ID
       WHERE p.User_ID = <USER_ID_PARAM>
    GROUP BY pl.ProLoc_ID
      HAVING COUNT(*) > 1
  )