繁体   English   中英

在其他select语句中选择最大值,并从嵌套的select中显示一个相关字段

[英]Select max value within other select statement and display also a relevant field from the nested select

我有一个问题要在mySql上表达下一条语句以返回真实结果:

     select max(alltaken)mn, b.title from 
     (select  count(bc.taken) as alltaken, b.title
     from books_clients bc
     join books b on b.book_id = bc.book_id
     group by b.title) as mn
     join books b on b.title = mn.title

我需要从第一个选择返回的书名按标题归类,然后在外部选择中返回以选择最大数量,还要显示相应的书名。 这样写的语句将返回最大数目和按b.title分组的标题,不相关的值...

语句的以下部分仅返回最大数,但我也无法将其转换为也返回标题:(:

    select max(alltaken)mn
    (select  count(bc.taken) as alltaken, b.title
    from books_clients bc
    join books b on b.book_id = bc.book_id
    group by b.title) as mn 

您能否帮助我为我创建真正的查询。

您可以在主要选择的“ mn.title”中访问“ b.title”。

我不知道您的数据库结构,因此可以检查您的SQL语句的有效性。 如果先前的建议不起作用,则可以发布数据库结构,以便我检查它并提供确切的SQL语句。

您甚至不需要子查询:

SELECT COUNT(bc.taken) AS mn
     , b.title
FROM books_clients AS bc
  JOIN books b 
    ON b.book_id = bc.book_id
GROUP BY b.title
ORDER BY mn DESC
LIMIT 1

如果有多个具有相同最大计数的结果,则需要一个子查询:

SELECT allb.mn
     , allb.title
FROM 
    ( SELECT COUNT(bc.taken) AS mn
      FROM books_clients AS bc
        JOIN books b 
          ON b.book_id = bc.book_id
      GROUP BY b.title
      ORDER BY mn DESC
      LIMIT 1
    ) AS maxb
  JOIN
    ( SELECT COUNT(bc.taken) AS mn
           , b.title
      FROM books_clients AS bc
        JOIN books b 
          ON b.book_id = bc.book_id
      GROUP BY b.title
    ) AS allb
    ON allb.mn = maxb.man

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM