我试图生成的查询将使用表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/

10-11 05:20