sql左连接与不同的正确?

时间:2010-07-05 21:58:57

标签: sql-server-2008 join

我正在尝试在具有1对多关系的表1和表2之间进行连接。

table1具有以下字段

  • createdate
  • 联络
  • tkey(代理键)

table2具有以下字段

  • tkey(主键)
  • 状态
  • userfld1
  • description

我想显示table2中的所有项目,其中table1中的相应项目按table2.userfld1

分组
select distinct t2.userfld1, t2.status, t2.description, t1.createdate, t1.contact
from table2 as t2 left join table1 as t1 
      on t2.tkey = t1.tkey 
group by t2.userfld1 

这是正确的吗?

2 个答案:

答案 0 :(得分:1)

不,这是不正确的,除非它们包含在聚合函数中,否则不能选择不在组中的列。我认为你所要求的甚至没有意义。我最好的猜测是你的意思是ORDER BY,而不是GROUP BY:

SELECT DISTINCT t2.userfld1, t2.status, t2.description, t1.createdate, t1.contact
FROM table2 t2
LEFT JOIN table1 t1
ON t2.tkey = t1.tkey 
ORDER BY t2.userfld1 

我修复了其他三个错误:

  • SELECT ... FROM not SELECT ... WHERE
  • 你应该加入一张桌子,而不是一列。
  • 表名后没有别名,但稍后会引用这些缺少的别名。

答案 1 :(得分:0)

我认为你要找的是订单,而不是分组,我也修复了你的问题:

select t2.userfld1, t2.status, t2.description, t1.createdate, t1.contact
where table2 t2 left join table1 t1
      on t2.tkey = t1.tkey 
order by t2.userfld1

这是你在找什么?