Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找缺少的属性表-Mysql_Mysql - Fatal编程技术网

查找缺少的属性表-Mysql

查找缺少的属性表-Mysql,mysql,Mysql,我正在清理数据库以进行sphinx索引,在我运行的数据中有一个反复出现的bug 为了让这一点适用于其他人,我将尽最大努力保持这一概念性而非个人性 我有一个带有数值的属性表:1,2,3,4,5。。。等等 我有一张资产表。 资产与属性具有1对多关系 为了处理1:N关系,我们有一个表来处理称为asset\u items的关系 每个资产将包含3个属性:1、2和3 属性 资产 资产项目 一组好的数据应该是这样的: id | asset_id | attribute_id | attribute_value

我正在清理数据库以进行sphinx索引,在我运行的数据中有一个反复出现的bug

为了让这一点适用于其他人,我将尽最大努力保持这一概念性而非个人性

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

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

为了处理1:N关系,我们有一个表来处理称为asset\u items的关系

每个资产将包含3个属性:1、2和3

属性 资产 资产项目 一组好的数据应该是这样的:

id | asset_id | attribute_id | attribute_value
___|__________|______________|_________________
1  | 1        | 1            | March
2  | 1        | 2            | 2
3  | 1        | 3            | 2015
由于我的bug,我正在寻找一个类似于所有缺少属性_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行。

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

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

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

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

它返回的行数比我预期的要少,但我相信这是因为我以前在运行它们时手动清理了大部分行。当我读到你的答案时,我明白了,但是,伙计,我永远不会独自想出这个答案。我真的很感谢你的回答,我很高兴你能理解我的例子。它返回的行数比我预期的少,但我相信这是因为我之前在运行它们时手动清理了大部分行。当我读到你的答案时,我明白了,但是,伙计,我永远不会独自想出这个答案。我真的很感激你的回答,我很高兴你能理解我的例子。
select asset_id
from asset_items
group by asset_id  
having sum(case when attribute_id = 2 then 1 else 0 end) = 0