如何将此SQL查询更改为" SELECT DISTINCT"基于一栏?

时间:2014-08-11 13:51:28

标签: mysql sql select distinct

所以我知道使用SQL你不能基于一个列进行DISTINCT,但是看看其他答案,看起来可以使用子查询来做到这一点。有人可以帮我用我的SQL查询吗?我已经尝试了很多不同的方法,似乎无法弄清楚如何让它发挥作用。

我试图根据emplid列选择SELECT DISTINCT。例如,如果有两行具有相同的emplid,我只需要其中一行。

SELECT DISTINCT t.TenantID, rt.term, t.emplid, t.staff, loc.locationName, tt.comment, l.lengthName
FROM TenantTerm tt
INNER JOIN Tenant t ON t.TenantID = tt.TenantID
INNER JOIN RentTerm rt ON rt.TenantID = t.TenantID
INNER JOIN length l ON l.lengthID = tt.lengthID
INNER JOIN location loc ON loc.locationID = tt.locationID
WHERE tt.assigned='0' AND rt.term>='$currentTerm' ORDER BY t.TenantID"

一些示例输出数据:

["TenantID"] => string(3) "535" 
["term"]=> string(4) "2137" 
["emplid"]=> string(7) "1855280" 
["staff"]=> string(1) "0" 
["locationName"]=> string(12) "BuildingOne" 
["comment"]=> string(0) "" 
["lengthName"]=> string(13) "Academic Year"  

注意:编辑以提高清晰度并包含样本数据。

1 个答案:

答案 0 :(得分:1)

您所询问的内容并不合理,DISTINCT适用于SELECT中的所有列...因此,如果您只想返回唯一的emplid值,那么您是什么期待在其他专栏中?

如果这些一致,你就不会问这个问题,如果你不关心它们,你为什么还要回来?

简单的答案是:

  SELECT DISTINCT t.emplid
    FROM TenantTerm tt
    JOIN Tenant t 
      ON t.TenantID = tt.TenantID
    JOIN RentTerm rt 
      ON rt.TenantID = t.TenantID
    JOIN length l 
      ON l.lengthID = tt.lengthID
    JOIN location loc 
      ON loc.locationID = tt.locationID
   WHERE tt.assigned='0' 
     AND rt.term>='$currentTerm'
ORDER BY t.TenantID