使用sqlite3,我得到了一个如下所示的表:
+---------+-----------------+----------+-----------+--------+
| ArtId | Location | ArtistID | Title | Size |
+---------+-----------------+----------+-----------+--------+
| 3 | China | 400 | birds | small |
| 4 | Samoa | 670 | stars | large |
| 5 | Chile | 427 | clouds | medium |
| 6 | US | 427 | clouds | small |
| 7 | France | 123 | collage | small |
| 8 | Spain | 123 | collage | large |
| 9 | Belarus | 123 | collage | medium |
+---------+-----------------+----------+-----------+--------+我有一个查询,它生成所有结果,其中唯一的结果是具有重复标题和艺术家的结果:
SELECT *
FROM LiveArt c1, (SELECT Title, ArtistID FROM LiveArt GROUP BY Title, ArtistID) c2
WHERE c1.Title = c2.Title AND c1.ArtistID = c2.ArtistID生成下表:
+---------+-----------------+----------+-----------+--------+
| ArtId | Location | ArtistID | Title | Size |
+---------+-----------------+----------+-----------+--------+
| 5 | Chile | 427 | clouds | medium |
| 6 | US | 427 | clouds | small |
| 7 | France | 123 | collage | small |
| 8 | Spain | 123 | collage | large |
| 9 | Belarus | 123 | collage | medium |
+---------+-----------------+----------+-----------+--------+我想要返回的是:
+---------+-----------------+----------+-----------+--------+
| ArtId | Location | ArtistID | Title | Size |
+---------+-----------------+----------+-----------+--------+
| 6 | US | 427 | clouds | small |
| 8 | Spain | 123 | collage | large |
| 9 | Belarus | 123 | collage | medium |
+---------+-----------------+----------+-----------+--------+我如何调整我的查询来做到这一点(跳过第一个匹配结果)?
发布于 2012-04-03 08:59:35
select * from tabName A
where A.ArtId !=
(
select min(ArtId)
from tabName B
group by Title
having A.Title=B.Title
);ArtId Location ArtistID Title Size
---------- ---------- ---------- ---------- ----------
6 US 427 clouds small
8 Spain 123 collage large
9 Belarus 123 collage medium发布于 2012-04-03 08:47:51
SELECT c1.*
FROM LiveArt c1
WHERE EXISTS
( SELECT *
FROM LiveArt c2
WHERE c1.ArtID < c2.ArtID
AND c1.Title = c2.Title
AND c1.ArtistID = c2.ArtistID
)发布于 2012-04-03 08:57:20
可能有一种更有效的方法,但像这样的方法可能会为您解决问题:
SELECT *
FROM LiveArt c1,
(
SELECT Title, ArtistID
FROM LiveArt
GROUP BY Title, ArtistID
) c2
WHERE c1.Title = c2.Title AND c1.ArtistID = c2.ArtistID
AND c1.ARTID NOT IN
(
SELECT MIN(ArtID)
FROM LiveArt
GROUP BY Title, ArtistID
)https://stackoverflow.com/questions/9985714
复制相似问题