【发布时间】:2016-09-03 08:33:54
【问题描述】:
我有用于用户和关系的 SQL 表,例如 用户{ID、姓名、电子邮件} 关系{ID、uid、relid、类型}
我想通过 SQL、使用 JOIN 或其他方式获取所有“朋友”ID、姓名和电子邮件(按当前用户 ID)。
如果使用 join 是加入用户表并选择关系还是选择关系并加入用户更好?
类似的东西(我现在发明了,我使用了一些不同的表和代码,抱歉有错误)
1:
SELECT DISTINCT u.ID, u.name, u.email FROM users u JOIN relationships r ON (r.uid = 1 OR r.relid = 1) AND r.type = 1 WHERE u.ID = r.uid OR u.ID = r.relid
2:
SELECT DISTINCT u.ID, u.name, u.email FROM relationships r JOIN users u ON r.uid = u.ID OR r.relid = u.ID = 1 WHERE r.uid = u.ID OR r.related = u.ID
编辑: 我使用 DISTINCT 因为当我选择 ID 等于 r.uid 或 r.related 的用户时,我还会为每个关系获取当前用户(uid + 相关)。 DISTINCT 应该使用户唯一吗?我是初学者,在 stackoverflow 上找到了这个。
那么,是从用户中选择并加入关系还是选择关系并加入用户更好?
顺便说一句:我非常喜欢 UNION 的答案
【问题讨论】:
标签: php mysql database join inner-join