запрос на подсчет количества записей с появляется только один раз в рельсах activerecord - PullRequest
1 голос
/ 20 июля 2011

Я хочу узнать количество элементов, которые встречаются в таблице только один раз.

в sql

выбрать счетчик () из (ВЫБРАТЬ счетчик (), идентификатор ИЗ трансгруппы ГРУППЫ ПО идентификатору HAVING count (*) = 1) temptable

Как это можно сделать в активной записи рельсов?

в таблице миллионы записей.

Ответы [ 3 ]

2 голосов
/ 20 июля 2011

что именно вы хотите ... ??? извини но я не понял твоего требования ....

то, что вы сделали, хорошо и правильно (только одна модификация имеет значение (*)) ...

хотя вы можете удалить select * из вашего запроса ...

просто вы можете написать

SELECT count(*),id FROM trans GROUP BY id HAVING count(*)=1

это также даст тот же результат с большей производительностью

- редактировать / обновлять

если вы хотите узнать о количестве результатов, вы можете применить счет (*) к этому запросу

как -

  SELECT count(*) from ( select id FROM trans GROUP BY id HAVING count(*)=1)
1 голос
/ 20 июля 2011

Попробуйте

find_by_sql("SELECT count(*) from ( select id FROM trans GROUP BY id HAVING count(*)=1)")
1 голос
/ 20 июля 2011

Это должно работать:
Trans.find(:all, :select => 'COUNT(*)', :group => 'trans.id HAVING COUNT(*) = 1')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...