首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何跳过子查询的匹配结果?

如何跳过子查询的匹配结果?
EN

Stack Overflow用户
提问于 2012-04-03 08:42:34
回答 3查看 60关注 0票数 3

使用sqlite3,我得到了一个如下所示的表:

代码语言:javascript
复制
+---------+-----------------+----------+-----------+--------+
| 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 |
+---------+-----------------+----------+-----------+--------+

我有一个查询,它生成所有结果,其中唯一的结果是具有重复标题和艺术家的结果:

代码语言:javascript
复制
SELECT * 
FROM LiveArt c1, (SELECT Title, ArtistID FROM LiveArt GROUP BY Title, ArtistID) c2 
WHERE c1.Title = c2.Title AND c1.ArtistID = c2.ArtistID

生成下表:

代码语言:javascript
复制
+---------+-----------------+----------+-----------+--------+
| 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 |
+---------+-----------------+----------+-----------+--------+

我想要返回的是:

代码语言:javascript
复制
+---------+-----------------+----------+-----------+--------+
| ArtId   |    Location     | ArtistID |  Title    |  Size  |
+---------+-----------------+----------+-----------+--------+
|  6      |        US       |   427    |   clouds  | small  |
|  8      |      Spain      |   123    |   collage | large  |
|  9      |     Belarus     |   123    |   collage | medium |
+---------+-----------------+----------+-----------+--------+

我如何调整我的查询来做到这一点(跳过第一个匹配结果)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-03 08:59:35

代码语言:javascript
复制
select * from tabName A
where A.ArtId !=
(
    select min(ArtId)
    from tabName B
    group by Title
    having A.Title=B.Title
);

代码语言:javascript
复制
ArtId       Location    ArtistID    Title       Size
----------  ----------  ----------  ----------  ----------
6           US          427         clouds      small
8           Spain       123         collage     large
9           Belarus     123         collage     medium
票数 1
EN

Stack Overflow用户

发布于 2012-04-03 08:47:51

代码语言:javascript
复制
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
      )
票数 0
EN

Stack Overflow用户

发布于 2012-04-03 08:57:20

可能有一种更有效的方法,但像这样的方法可能会为您解决问题:

代码语言:javascript
复制
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
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9985714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档