我的数据库中有两个表:
CREATE TABLE PAR (
A varchar(10) not null,
T varchar(25) not null,
U varchar(25) not null,
V varchar(30) not null,
primary key (A),
);
INSERT INTO PAR (A, T, U, V)
VALUES
('A5065','Choco','Belt','Texas'),
('B6060','Koro','Tan','Montana'),
('C2036','Beta','Blast','Washington'),
('D2000','Tao','Bet','Kentucky');
CREATE TABLE AT (
A varchar(10) not null,
B char(1),
C integer,
D varchar(20),
primary key (A),
foreign key (A) references PAR(A)
);
INSERT INTO AT (A, B, C, D)
VALUES
('A5065','Z','1660','Apple'),
('B6060','D','1598','Banana');我想编写一个查询,在表AT中查找最高和最低的C值
所需的输出将如下所示:
Choco Belt 1660
Koro Tan 1598我编写了一个查询,但不幸的是它只返回:(没有针对1660和1598值的第二列)
Choco Belt
Koro Tan我的问题是:
SELECT CONCAT(T,' ', U) AS 'Names' from PAR
WHERE A IN ( SELECT A from AT where (C IN (SELECT MIN(C) from AT) || C IN (SELECT MAX(C) from AT)));发布于 2021-11-13 18:14:01
您需要在select-list中指定第二列,这意味着您必须在外部查询中引用一个表。所以使用JOIN而不是IN(subquery)
SELECT CONCAT(T,' ', U) AS 'Names', AT.C
FROM PAR
JOIN AT USING (A)
WHERE AT.C IN (SELECT MIN(C) from AT) OR AT.C IN (SELECT MAX(C) from AT)输出:
+------------+------+
| Names | C |
+------------+------+
| Choco Belt | 1660 |
| Koro Tan | 1598 |
+------------+------+提示:使用OR而不是||进行逻辑OR,因为||可以表示字符串连接,这取决于您的SQL模式。
https://stackoverflow.com/questions/69956902
复制相似问题