所以我知道使用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"
注意:编辑以提高清晰度并包含样本数据。
答案 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