1

列内で最も一般的な文字列を見つけるためにテーブルをクエリしています。ただし、正しく機能していないようです。最も一般的な文字列の値を返す必要がありますが、代わりに最も一般的な文字列が存在する回数を返します。クエリは次のとおりです。

SELECT COUNT(field_review_bar_tab_2_value) AS `Rows`
FROM (field_data_field_review_bar_tab_2)
GROUP BY (field_review_bar_tab_2_value)
ORDER BY `Rows` DESC
LIMIT 1

簡略化されたテーブル構造は、次のような効果があります。

 -----------------------------------
| ID | field_review_bar_tab_2_value |
|----+----------------------------- |
| 1  | Food Drinks                  |
| 2  | Drinks                       |
| 3  | Food Drinks                  |
| 4  | Food                         |
 -----------------------------------

クエリは、上記の例では、「FoodDrinks」が列で最も一般的な文字列であることを認識しています。ただし、クエリは「FoodDrinks」ではなく「2」を返します。なぜ正しいクエリを実行するのに、文字列の値ではなく結果のカウントを返すのかについてのアイデアはありますか?

4

3 に答える 3

2

リストにもfield_review_bar_tab_2_value含める必要があります。SELECTアグリゲートをCOUNT(*)ここに切り替え、グループ化された列をに含めましたSELECT

SELECT 
 field_review_bar_tab_2_value AS the_most_common_string,
 COUNT(*) AS `Rows`
FROM (field_data_field_review_bar_tab_2)
GROUP BY (field_review_bar_tab_2_value)
ORDER BY `Rows` DESC
LIMIT 1
于 2012-07-09T18:51:08.850 に答える
0

値ではなく、カウントを選択しています。私はあなたが意味すると思います:

SELECT field_review_bar_tab_2_value
FROM field_data_field_review_bar_tab_2
GROUP BY field_review_bar_tab_2_value
ORDER BY COUNT(*) DESC
LIMIT 1

問題の値ですでにグループ化されているので、COUNT(*)...を実行できます。

于 2012-07-09T18:52:14.507 に答える
0

フィールド自体を返すようにクエリを変更する必要があります。現在、クエリはCOUNTのみを返します。これは、それがselectステートメントに示されているためです。次のように変更します。

SELECT field_review_bar_tab_2_value AS `MostCommonString`, COUNT(field_review_bar_tab_2_value) AS `Rows` 
FROM (field_data_field_review_bar_tab_2) 
GROUP BY (field_review_bar_tab_2_value) 
ORDER BY `Rows` DESC 
LIMIT 1
于 2012-07-09T18:52:51.540 に答える