MySQL-在同一张表上的子查询

时间:2019-02-11 12:29:29

标签: mysql

我有一个与此相似的简单表格。我需要最小操作数的数字和文字。

我遇到的问题是我确实在MySQL中获得了预期的结果,但是我的工作环境无法做到这一点。它会打印所有唯一的文本,因此对于每个数字和最少的操作,我都会获得所有数据。无论如何,我认为子查询将起作用,因为我可以交叉链接同一张表以只获取min(amount)的一行。

首先这是我想要的结果:

+-------------+--------+-------+
| min(action) | number | text1 |
+-------------+--------+-------+
|           1 |    108 | A1    |
+-------------+--------+-------+

这是我的数据代码:

CREATE TABLE t1
(

action int (10),
number int (10),
text1 text);


insert into T1 values 
( 1, 108,'A1'),
( 2, 108,'A2'),
( 3, 108,'A3'),
( 4, 108,'A4'),
( 5, 108,'A5');

这在MySQL中有效,但在我的环境中无效:

SELECT
min(action)
, number
, text1

FROM t1

GROUP by number;
, text1;

这是我需要帮助的地方:

SELECT
t1.number,
t2.text1

FROM t1

LEFT JOIN
(
SELECT t2.action
    , t2.text1

FROM t1 AS t2 ) 

ON t1.action = t2.action

GROUP by t1.number;

1 个答案:

答案 0 :(得分:0)

  

使用子查询而不是使用联接

首先从子查询中获取最小数量,然后根据其获取整个记录

select * from t1 where action in (select min(action) from t1);