سؤال

ولدي مثل هذا الجدول:

+-----+-----+-------+
| id  | fk  | value |
+-----+-----+-------+
| 0   | 1   | peter |
| 1   | 1   | josh  |
| 3   | 2   | marc  |
| ... | ... | ...   |

وأود الآن للحصول على كل مداخل والتي لها أكثر من قيمة واحدة. فإن النتيجة المتوقعة هي:

+-----+-------+
| fk  | count |
+-----+-------+
| 1   | 2     |
| ... | ...   |

وحاولت تحقيق ذلك من هذا القبيل:

select fk, count(value) from table where count(value) > 1;

ولكن لم أوراكل لا ترغب في ذلك.

وهكذا حاولت هذا ...

select * from (
    select fk, count(value) as cnt from table
) where cnt > 1;

... من دون نجاح.

وأي أفكار؟

هل كانت مفيدة؟

المحلول

استخدم شرط having للمقارنة بين الركام.

وبالإضافة إلى ذلك، تحتاج إلى مجموعة من ما كنت تجميع ضد للاستعلام للعمل بشكل صحيح. ما يلي هو بداية، ولكن منذ كنت في عداد المفقودين مجموعة من بند لا يزال انها لن تعمل تماما. بالضبط ما تحاول أن العد؟

select fk, count(value) 
from table 
group by fk
having count(value) > 1;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top