为了演示我的要求,我将提供两个表:Product表和PC表。产品表包含以下信息:
MAKER MODEL TYPE
----- ---------- -------
A 1232 PC
A 1233 PC
A 1276 Printer
A 1298 Laptop
A 1401 Printer
A 1408 Printer
A 1752 Laptop
B 1121 PC
B 1750 Laptop
C 1321 Laptop
D 1288 Printer
D 1433 Printer
E 1260 PC
E 1434 Printer
E 2111 PC
E 2112 PC
PC表包含以下信息:
CODE MODEL SPEED RAM HD CD PRICE
---------- ---------- ---------- ---------- ---------- ---------- ----------
1 1232 500 64 5 12x 600
2 1121 750 128 14 40x 850
3 1233 500 64 5 12x 600
4 1121 600 128 14 40x 850
5 1121 600 128 8 40x 850
6 1233 750 128 20 50x 950
7 1232 500 32 10 12x 400
8 1232 450 64 8 24x 350
9 1232 450 32 10 24x 350
10 1260 500 32 10 12x 350
11 1233 900 128 40 40x 980
12 1233 800 128 20 50x 970
为了执行返回所有PC模型的查询,以下哪个查询会更好:
SELECT model FROM pc;
OR
SELECT model FROM product JOIN pc USING(model);
答案 0 :(得分:1)
由于您只需要PC型号,因此您所说的第一个查询可以使用。
在第二个查询中,您首先获取产品表内容,然后将它们连接到PC表中,这比第一个查询慢,并且因为您不需要Product表中的任何列,所以没有必要。
如果不添加where子句并且PC模型为1276
,则可以使用下面的查询作为替代,仅返回与PC相关的行。您的第二个查询将返回A - 1276 - Printer
行。
SELECT DISTINCT model FROM product JOIN pc USING(model) where product.type='PC';