【问题标题】:Need SQL aid for query with LEFT JOIN使用 LEFT JOIN 进行查询需要 SQL 帮助
【发布时间】:2013-06-19 21:50:32
【问题描述】:

我是 sql 初学者,在使用左连接(或备用)函数时需要一些帮助:

我有 2 张桌子:

1) 客户

2) 服务器

客户端有 2 列(countryclientname),它们在服务器中不存在。我想使用两个表中存在的唯一标识符列“ClientID”将这两列加入/复制到服务器表中以匹配和加入。我将如何去做这件事,有什么推荐的更简单的方法吗?我目前没有对数据库的物理访问权限,因此我无法真正测试任何查询,因此感谢您的帮助!

谢谢

【问题讨论】:

  • 这个问题令人困惑。如果你要开发 SQL,你真的需要一个数据库。由于 MySQL 社区版数据库是免费提供的,因此完全不清楚为什么您无权访问数据库。
  • 不确定我是否遵循您的要求。您是尝试连接两个表以产生结果还是尝试将数据从一个表复制到另一个表?样本数据和期望的结果会有所帮助。顺便说一句——你总是可以访问数据库——考虑 sqlfiddle.com ...
  • 我离开了带有结果的数据库,但我只想加入从客户端到服务器的两列。很抱歉解释模糊,我真的很不擅长 sql

标签: mysql sql sql-server join sas


【解决方案1】:

你在找这个吗?

SELECT s.*, c.country, c.clientname
  FROM server s LEFT JOIN client c 
    ON s.clientid = c.clientid

这里是 SQLFiddle 演示。

要更好地理解JOINs,请参阅A Visual Explanation of SQL Joins

【讨论】:

  • 代码运行良好,但有 1 个问题; ON 语句是否意味着 WHERE s.clientid = c.clientid?因此,只需再次确保,此代码将“客户端”中的国家和客户端名称列与服务器(即这两个列现在也在服务器中)同时匹配服务器中的客户端 ID 与客户端中的客户端 ID?再次感谢!
  • @user72757 没错。请注意,您要求LEFT JOIN。这意味着即使没有为特定服务器记录指定clientid(为空),也不会从结果集中过滤掉该服务器记录(如我的 sqlfiddle 示例中的 server4)。如果server 表中的clientid 列有NOT NULL 和外键约束,您可以使用INNER JOIN,这可能会更快。
猜你喜欢
  • 1970-01-01
  • 2016-12-18
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
相关资源
最近更新 更多