0

私はこのコードについて調べました:

select *,
  year(curdate())-year(dbirth) - (right(curdate(),5) < right(dbirth,5)) as age 
from       resident_info 
having age = 18;

しかし、私が欲しかったのは、すでに18個の情報をすべて取得した後でそれらを数えたかったことです。2つのクエリを同時に入力する方法や、問題の解決策はありますか?どうもありがとう

4

2 に答える 2

1

私が何かを見逃していない限り、これらが必要な場合はcount、次を使用できます。

select count(*)
from
(
  select *,
   year(curdate())-year(dbirth) - (right(curdate(),5) < right(dbirth,5)) as age 
  from       resident_info 
 having age = 18
) src

resident_infoとからすべてのデータを返したい場合は、 :countを使用できます。CROSS JOIN

select *, 
   year(curdate())-year(dbirth) - (right(curdate(),5) < right(dbirth,5)) as age,
   src.Total
from resident_info 
cross join
(
    select count(*) Total
    from
    (
        select year(curdate())-year(dbirth) - (right(curdate(),5) < right(dbirth,5)) as age 
        from  resident_info 
        having age = 18
    ) x
) src
having age = 18
于 2013-02-25T16:37:04.623 に答える
0

これは役立つかもしれません。

select temp.*,
   year(curdate())-year(dbirth) - (right(curdate(),5) < right(dbirth,5)) as age 
       FROM resident_info AS temp
       WHERE age = 18;
于 2013-02-25T16:38:35.940 に答える