php - SQL - 根据条件连接选定的数据或表

标签 php mysql database join inner-join

我有用户和关系的 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 的答案

最佳答案

您可以合并用户在 uidrelid 中的用户。

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/

相关文章:

mysql - sql 更新表 mysql 从 oracle 调用,尽管 dg4odbc 不工作

php - 单引号查询显示为空

php - MySQL查询排序

mysql - 错误代码 1215。无法添加外键约束

php - 在 MySQLi 和 PHP 中使用数组

sql-server - 提高数据库性能最快的方法是什么?直接瞄准我的目标(5000 个用户)?或者首先使用人工里程碑?

php - 从教程中复制 PHP 代码会在我的计算机上显示通知

php - azure 托管 Web 应用程序上的 html 联系表单

mysql - 使用 LIKE 语句连接两个表

sql - 用于 250K+ 字符串的通配符搜索的 Fast(er) 方法