簡體   English   中英

初學者對SQL查詢有困難

[英]Beginner having difficulty with SQL query

我已經學習SQL已有2周了,並且正在准備進行SQL測試。 無論如何,我試圖做這個問題:

對於表:

1   create table data {
2   id int,
3   n1 int not null,
4   n2 int not null,
5   n3 int not null,
6   n4 int not null,
7   primary key (id)
8   }

我需要返回元組(n1,n2,n3)的關系,其中n4的所有對應值均為0。問題要求我不使用子查詢(嵌套選擇/視圖)來解決它

它還給了我一個示例表和查詢的預期輸出:

01  insert into data (id, n1, n2, n3, n4)
02  values (1, 2,4,7,0),
03  (2, 2,4,7,0),
04  (3, 3,6,9,8),
05  (4, 1,1,2,1),
06  (5, 1,1,2,0),
07  (6, 1,1,2,0),
08  (7, 5,3,8,0),
09  (8, 5,3,8,0),
10  (9, 5,3,8,0);

期望

(2,4,7)
(5,3,8)

而不是(1,1,2),因為在其中一種情況下,n4中有1分。

我能想到的最好的是:

1   SELECT DISTINCT n1, n2, n3
2   FROM data a, data b
3   WHERE a.ID <> b.ID
4         AND a.n1 = b.n1
5         AND a.n2 = b.n2
6         AND a.n3 = b.n3
7         AND a.n4 = b.n4
8         AND a.n4 = 0

但我發現它也會打印(1,1,2),因為在示例(1,1,2,0)中,ID 5和6發生了兩次。

任何建議將不勝感激。

在我看來,您可以嘗試使用分組和具有諸如

Select N1,N2,N3 from Data group by N1,N2,N3 having Max(N4)=0 and MIN(N4)=0

由於這是家庭作業,因此請從考慮分組開始。

您還可以使用兩個查詢和減號運算符。

當您可以像喬爾特所說的那樣利用分組優勢時,為什么要選擇最大和最小?

SELECT n1,
       n2,
       n3
FROM   data
GROUP  BY n1,
          n2,
          n3
HAVING Max(n4)=0 AND Min(n4)=0;

將是一種選擇

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM