mysql - 如果存在,如何进行 MySQL 查询以获取其他表字段值?

标签 mysql sql join

假设我们有这个模型:

enter image description here

如您所见,industry_id 可以为空。我可以在拥有 user.id 的情况下通过单个 MySQL 查询获取 industry.name(如果有)、user.description、profile.name 和 project.title(所有项目标题)吗?

最佳答案

是的,JOIN 两个表:

SELECT
  i.name,
  u.id
FROM Industry AS i
LEFT JOIN `User` AS u ON u.industry_id = i.industry_id;

更新:

对于多个表:

SELECT 
  i.Name  AS InustryName,
  p.Name  AS UserName,
  u.Description,
  j.title AS ProjectTitle
FROM Industry AS i
INNER JOIN User    AS u ON i.id      = u.id
INNER JOIN Profile AS p ON p.user_id = u.id
INNER JOIN Project AS j ON u.id      = j.user_id;

请注意:我在表之间使用了 INNER JOIN,这只会为您提供连接表中匹配的行,您可能需要使用 LEFT JOIN 而不是innner join 以包含不匹配的行,即获取那些在其他表中没有条目的行业。请参阅此博客文章:

关于mysql - 如果存在,如何进行 MySQL 查询以获取其他表字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15406308/

相关文章:

sql - 更新触发中的更新语句是否会再次触发?

sql - 产品发布的数据库管理

sql - 如何设置列的默认值?

php - SQL SELECT 和 PHP 检索使用单表 VS 连接两个表的速度?

mysql - 为什么SQL选择连接索引不一致?

sql - RIGHT JOIN 是处理此查询的方法吗?

java - 如何在没有 pom.xml 文件的情况下在 OpenShift 中安装 MYSQL JDBC 驱动程序?

mysql - 根据唯一键之间的比较选择另一列的最新值

返回整数(32 位 int)的 PHP 哈希函数

php - Mysql php 多选、排序