mysql从表中选择记录,除了null

时间:2017-06-09 08:21:31

标签: mysql

我有一个表名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

2 个答案:

答案 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'等,以忽略标题限制为空 然后查询的第一部分选择标题不为空的所有记录,但忽略那些没有限制的记录 查询的第二部分根据需要提供所有结果,而不对选择列表进行任何标题验证。