2015-05-06 48 views
0

这是我的查询:Mysql的子查询没有显示行

SELECT a.vardas, a.pavarde FROM `y6fdt_igym_abonementai` AS a 
INNER JOIN 
( 
    SELECT max(galiojaiki) gal, id, abonementas FROm y6fdt_igym_sutartys 
) c 
on c.abonementas = a.id 

为什么我只看到a.vardas和a.pavarde列作为结果。但不是id,subquery的abonementas?

+0

只是为了您的信息。你检查了子查询的结果吗?因为在其他字段没有“group by”的那个“max”可以按照预期给你另一个结果。 – stevenvanc

回答

5

如果您想查看这些列,则必须将它们添加到主要的SELECT子句中。

SELECT a.vardas, a.pavarde, c.gal, c.id, c.abonementas 
FROM `y6fdt_igym_abonementai` AS a 
INNER JOIN 
( 
    SELECT max(galiojaiki) gal, id, abonementas FROm y6fdt_igym_sutartys 
) c 
on c.abonementas = a.id 

注意,在子查询的idabonementas列将无法从一行max(galiojaiki)。它会从表格中随机选取一行。如果你想那些特定的值,你需要使用:

SELECT a.vardas, a.pavarde, c.gal, c.id, c.abonementas 
FROM `y6fdt_igym_abonementai` AS a 
FROM y6fdt_igym_sutartys AS c ON c.abonementas = a.id 
INNER JOIN 
( 
    SELECT max(galiojaiki) AS maxgal 
    FROm y6fdt_igym_sutartys 
) d on c.galiojaiki = d.maxgal 
0

变化

SELECT a.vardas, a.pavarde FROM `y6fdt_igym_abonementai` AS a 
... 
SELECT max(galiojaiki) gal, id, abonementas FROm y6fdt_igym_sutartys 

SELECT a.vardas, a.pavarde FROM `y6fdt_igym_abonementai` a 
... 

SELECT max(c.galiojaiki) c.gal, c.id, c.abonementas FROm y6fdt_igym_sutartys c