所以我知道使用 SQL 不能基于一列执行 DISTINCT,但查看其他答案似乎可以使用子查询来执行此操作。谁能帮我用我的 SQL 查询来做到这一点?我尝试了很多不同的方法,但似乎不知道如何让它发挥作用。
我正在尝试根据 emplid 列 SELECT DISTINCT。例如,如果有 2 行具有相同的 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"
注意:经过编辑以提高清晰度并包含示例数据。
最佳答案
您所要求的实际上没有意义,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
关于mysql - 如何根据一列将此 SQL 查询更改为 "SELECT DISTINCT"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25244919/