我试图生成的查询将使用表A中的以下列:
名称
描述
查询应提供以下筛选器:
从表A中选择不重复的名称
只选择没有重复描述的名称
选择不包含字符串的描述:“Any”或“Deleted”
按名称排序
这是我目前的陈述,除了重复的描述之外,我什么都知道了。如何将此添加到当前报表中?
选择
DISTINCT name FROM tableA
WHERE description NOT LIKE 'Any%'
AND description NOT LIKE 'Deleted%'
按名称排序
最佳答案
你应该尝试使用自连接。
使用左侧表格筛选以“Any”或“Deleted”开头的描述。由于要删除具有重复描述的行,因此只能选择右侧具有相同描述但找不到其他名称的匹配行的结果:
SELECT
leftSide.name,
leftSide.description
FROM
tableA as leftSide
LEFT JOIN tableA as rightSide ON (
leftSide.description = rightSide.description AND
leftSide.name <> rightSide.name
)
WHERE
rightSide.description IS NULL AND
leftSide.description NOT LIKE 'Any%' AND
leftSide.description NOT LIKE 'Deleted%'
GROUP BY
leftSide.name, leftSide.description
ORDER BY
leftSide.name
关于mysql - 具有多个DISTINCT的SQL语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13617430/