2017-06-28 61 views
0

我有一张表,我经常添加关于图片的信息。如果某个类别中的图片是我最好的,我希望它能够代表该类别。由于我添加了许多图片,因此我很难删除所有旧的“最佳图片标志”,并希望以更好的方式找到它们。我已经搜索,但从未真正找到解决方案,所以我一直在滚动浏览我的500多个类别以找到双打。MySQL,找到与另一个匹配参数的双行

ID Category Best_pic 
1  A   no 
2  B   no 
3  C   no 
4  A   yes 
5  B   yes 
6  C   no 
7  A   yes 
8  B   yes 
9  C   yes 

所以我想我的搜索返回的行4,5,7和8,所有行的列Best_pic是肯定的,并有多个行与列类别值。

我真的很希望我明确表示,我已经有这个问题几年了,但图片往往是这么多,它很难处理这个没有一个适当的sql问题。 :-)

在此先感谢!

回答

0

可以尝试以下溶液:

​​
+0

谢谢!这工作得很好! :-)你刚刚为我节省了很多时间:-) – yens

+0

不客气! - 随意标记为已解决;) –

+0

我实际上正在尝试,现在我希望我找到了正确的方法来做到这一点:-) – yens

0

选择T *从测试吨JOIN(自测试 选择CAT_ID其中标志= '是' 基团通过具有计数CAT_ID(ID)> 1 )为ON a.cat_id = t.cat_id其中t.flag = '是'

+0

谢谢您的输入。我也会尝试这个解决方案,即使我在下面找到一个工作:-) – yens

0

我会做这样的:

select t.* 
from t 
where t.best_pic = 'yes' and 
     exists (select 1 
       from t t2 
       where t2.category = t.category and 
        t2.best_pic = t.best_pic and 
        t2.id <> t.id 
      ); 

随着t(best_pic, category, id)索引,这应该是最好的解决方案,在大多数情况下。

+0

非常感谢您发起的评论,我也会尝试您的解决方案。 :-) – yens

相关问题