我有用户和关系的 SQL 表,比如 用户{ID,姓名,电子邮件} 关系{ID, uid, relid, type}
我想通过 SQL、使用 JOIN 或其他方式获取所有“ friend ”ID、姓名和电子邮件(按当前用户 ID)。
如果使用连接,是连接用户表并选择关系更好还是选择关系并连接用户更好?
类似这样的东西(我现在发明了,我使用了一些不同的表格和代码,对错误感到抱歉)
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 的答案
最佳答案
您可以合并用户在 uid
和 relid
中的用户。
SELECT users.*
FROM users
INNER JOIN relationships AS rel
ON users.ID = rel.uid
WHERE users.ID = 500
UNION
SELECT users.*
FROM users
INNER JOIN relationships AS rel
ON users.ID = rel.relid
WHERE users.ID = 500
关于php - SQL - 根据条件连接选定的数据或表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39304907/