【发布时间】:2018-04-21 16:03:30
【问题描述】:
首先我使用的是 mysql 5.6
我想选择至少满足以下一项要求的所有元素:
- 不有特定的领域。
- 某个字段有一个空值(对于空我的意思是:
len(trim(value)) == 0)
我举个例子更清楚
table2
id|field|value
1 |x |12
1 |y |23
1 |z |34
2 |x |45
2 |y |56
2 |z | <---- is an empty string with 0/1 spaces
3 |x |67
所以我想要的是,例如,如果我想要所有没有字段 z 的字段,我应该获得 (2,3)
如果所有字段都没有y,我应该获得(3)
这是我尝试但没有成功的方法:
SELECT t12.id
FROM table2 AS t12
WHERE NOT IN (
SELECT t2.id
FROM table2 as t2
WHERE t2.field = 'y'
AND t2.value <> '' AND t2.value IS NOT NULL
)
【问题讨论】:
-
删除错字!谢谢,原来的表结构要复杂得多
-
t1.field应该是t2.field。为什么要加入table1?你没有用它做任何事情。 -
在查询的
OR部分加上括号。见stackoverflow.com/questions/27663976/… -
@Barmar 我重写了查询,现在更简单了
-
你为什么要检查
t2.value?问题描述中没有提到该列。