找到缺少的属性表 - Mysql

时间:2015-12-15 23:08:52

标签: mysql

我正在清理我的数据库以进行sphinx索引,并且我正在运行的数据中有一个明显的错误。

为了使其适用于其他所有人,我会尽力保持这种概念而非个人。

我有一个带有数值的属性表:1,2,3,4,5 ...等。

我有一张资产表。 资产与属性具有1对多的关系。

为了处理1:N关系,我们有一个表来处理名为 asset_items 的关系。

每个资产将包含3个属性:1 2& 3。

属性

id |  value
___|________
1  |  month
2  |  day
3  |  year

资产

id | owner_id
___|_________
1  | 512

资产项目

一组好的数据会是这样的:

id | asset_id | attribute_id | attribute_value
___|__________|______________|_________________
1  | 1        | 1            | March
2  | 1        | 2            | 2
3  | 1        | 3            | 2015

由于我的错误,我正在寻找一个类似于缺少attribute_id为2的所有资产的示例。例如:

id  | asset_id  | attribute_id | attribute_value
____|___________|______________|_________________
45  | 22        | 1            | October
47  | 22        | 3            | 1996

到目前为止我的SQL是:

select *
from asset_items
group by attribute_id  
having count(attribute_id = 2) = 0

但不幸的是,这一切都没有回归。正确的SQL应该返回> 500行。

1 个答案:

答案 0 :(得分:0)

您可以使用条件聚合执行此操作:

select asset_id
from asset_items
group by asset_id  
having sum(case when attribute_id = 2 then 1 else 0 end) = 0