MySQLで次のことを達成しようとしています(pseudo
コードを参照)
SELECT DISTINCT gid
FROM `gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC
リソースの無駄のように見えるため、WHERE 句で (SELECT...) を使用せずにこれを行う方法はありますか。
MySQLで次のことを達成しようとしています(pseudo
コードを参照)
SELECT DISTINCT gid
FROM `gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC
リソースの無駄のように見えるため、WHERE 句で (SELECT...) を使用せずにこれを行う方法はありますか。
これを試して;
select gid
from `gd`
group by gid
having count(*) > 10
order by lastupdated desc
あなたが何をしようとしているのかわからない...多分次のようなもの
SELECT gid, COUNT(*) AS num FROM gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC
SELECT COUNT(*)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;
編集(GIDが必要な場合):
SELECT MIN(gid)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC
試す
SELECT DISTINCT gid
FROM `gd`
group by gid
having count(*) > 10
ORDER BY max(lastupdated) DESC
-- 30 分ごとの記録が欠落している気象観測所の検索
SELECT stationid
FROM weather_data
WHERE `Timestamp` LIKE '2011-11-15 %' AND
stationid IN (SELECT `ID` FROM `weather_stations`)
GROUP BY stationid
HAVING COUNT(*) != 48;
-- where .. in .. select を使用した yapiskan のバリエーション
count()
で追加できないと思いますwhere
。理由を見てみましょう....
where
と同じではありませんhaving
,having
あなたがグループと同じ作業を扱っていることを意味します, それはまたグループ全体を扱っています,
今、それがグループ全体としてどのように機能しているかを数えます
テーブルを作成し、いくつかの ID を入力してから、次を使用します。
select count(*) from table_name
合計値は、何らかのグループを示していることを意味します。;もwhere
追加されます。count()