我有一个表名tableA
id | name | title
1 aa titleaaa
2 bb titlebbb
3 cc titleccc
4 aa titleAAA
5 dd null
6 ee null
7 aa null
8 bb null
我不确定我是否可以描述我的情况 我想要一个sql来得到如下的结果(如果'aa'有多个记录,我想除了那个标题为null之外,如果'dd'只有一个记录,无论title是否为null,我想要记录):
1 aa titleaaa
2 bb titlebbb
3 cc titleccc
4 aa titleAAA
5 dd null
6 ee null
答案 0 :(得分:1)
SELECT * FROM TABLENAME WHERE TITLE IS NOT NULL
UNION
SELECT * FROM TABLENAME WHERE TITLE IS NULL GROUP BY NAME
或强>
SELECT * FROM TABLENAME WHERE TITLE IS NOT NULL
UNION
SELECT * FROM TABLENAME WHERE name NOT IN(SELECT NAME FROM TABLENAME WHERE TITLE IS NOT NULL) GROUP BY NAME
尝试以上查询。 希望这会对你有所帮助。
答案 1 :(得分:0)
Select * from tableA where title is not null and name not in ('dd')
union
select * from tableA where name in ('dd')
假设您有一个名称列表,如'dd','ee'等,以忽略标题限制为空 然后查询的第一部分选择标题不为空的所有记录,但忽略那些没有限制的记录 查询的第二部分根据需要提供所有结果,而不对选择列表进行任何标题验证。