MySQL查询显示其他查询信息



我在数据库中有两个表:

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)));

您需要在选择列表中指定第二列,这意味着您必须有一个表在外部查询中引用。因此使用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模式。

最新更新