181

MySQLで次のことを達成しようとしています(pseudoコードを参照)

SELECT DISTINCT gid
FROM `gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC

リソースの無駄のように見えるため、WHERE 句で (SELECT...) を使用せずにこれを行う方法はありますか。

4

9 に答える 9

307

これを試して;

select gid
from `gd`
group by gid 
having count(*) > 10
order by lastupdated desc
于 2008-11-19T12:52:53.303 に答える
30

あなたが何をしようとしているのかわからない...多分次のようなもの

SELECT gid, COUNT(*) AS num FROM gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC
于 2008-11-19T12:52:55.470 に答える
20
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
于 2008-11-19T12:52:12.197 に答える
15

試す

SELECT DISTINCT gid
FROM `gd`
group by gid
having count(*) > 10
ORDER BY max(lastupdated) DESC
于 2008-11-19T12:52:59.963 に答える
6

-- 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 のバリエーション

于 2011-11-16T13:22:00.343 に答える
1

count()で追加できないと思いますwhere。理由を見てみましょう....

whereと同じではありませんhaving,havingあなたがグループと同じ作業を扱っていることを意味します, それはまたグループ全体を扱っています,

今、それがグループ全体としてどのように機能しているかを数えます

テーブルを作成し、いくつかの ID を入力してから、次を使用します。

select count(*) from table_name

合計値は、何らかのグループを示していることを意味します。;もwhere追加されます。count()

于 2012-04-05T06:32:27.480 に答える