我正在尝试对两个具有相似值但不完全相同的表进行INNER JOIN。一个表的主键具有完全限定的主机名,其他表的主机简称以及子域。可以安全地假设简称和子域是唯一的。

所以我尝试了:

SELECT table1.nisinfo.* FROM table1.nisinfo INNER JOIN table2.hosts ON (table1.nisinfo.shortname + '.' + table1.nisinfo.subdomainname + '.domain.com') = table2.hosts.fqhn WHERE table2.hosts.package = 'somepkg';


这不会返回我期望的结果,它将数百次返回第一个结果。我想返回不同的行。运行也需要很长时间。

我究竟做错了什么?我当时在考虑运行子查询来获取主机名,但是我不知道从这里开始的正确路径是什么。

谢谢!

最佳答案

您可以在查询中使用分组依据,以便获得所需的预期结果
请看这两个链接

Group by with 2 distinct columns in SQL Server

http://www.sqlteam.com/article/how-to-use-group-by-with-distinct-aggregates-and-derived-tables

10-06 05:49