I have the following query:
select distinct profile_id from userprofile_...
union
select distinct profile_id from productions_...
How would I get the count of the total number of results?
I have the following query:
select distinct profile_id from userprofile_...
union
select distinct profile_id from productions_...
How would I get the count of the total number of results?
すべてのレコードの合計数が必要な場合は、次のようにします。
SELECT COUNT(*)
FROM
(
select distinct profile_id
from userprofile_...
union all
select distinct profile_id
from productions_...
) x
Union All
両方のテーブルに等しい行がある場合に使用する必要があります。
select count(*) from
(select distinct profile_id from userprofile_...
union ALL
select distinct profile_id from productions_...) x
この場合、Profile_Id
両方のテーブルで同じ値を取得した場合 (id はおそらく数字なので可能です)、 を使用すると、両方でUnion
取得した場合、1 つの行が失われます (2 つではなく 1 回表示されます)。Id = 1
tables
これはかなりうまく機能します:
select count(*) from (
select profile_id
from userprofile_...
union
select profile_id
from productions_...
) x
を使用すると、union
異なる値が保証されます -union
重複が削除され、union all
保存されます。これは、キーワードが必要ないことを意味しますdistinct
(他の回答はこの事実を利用せず、より多くの作業を行うことになります)。
両方のテーブルに表示される特定の値が異なる値と見なされる場合に、それぞれの異なる profile_id の数を合計する場合は、次を使用します。
select sum(count) from (
select count(distinct profile_id) as count
from userprofile_...
union all
select count(distinct profile_id)
from productions_...
) x
このクエリは、他のすべての回答よりもパフォーマンスが優れています。これは、データベースがテーブル内の個別の値を結合リストよりもはるかに高速に効率的にカウントできるためです。はsum()
単純に 2 つのカウントを加算します。
COUNT(*) のいずれかで結果が 0 の場合、これらは機能しません。
これはより良いでしょう:
SELECT SUM(合計) から ( 合計として COUNT(distinct profile_id) を選択 userprofile_ から... ユニオンオール 合計として COUNT(distinct profile_id) を選択 from productions_... ) バツ
omg ponies が既に UNION との明確な使用の使用がないことを指摘しているように、あなたのケースでは UNION ALL を使用することができます.....
SELECT COUNT(*)
FROM
(
select distinct profile_id from userprofile_...
union all
select distinct profile_id from productions_...
) AS t1
最善の解決策は、2 つのクエリ結果のカウントを追加することです。テーブルに多数のレコードが含まれていても問題ありません。また、ユニオン クエリを使用する必要はありません。元:
SELECT (select COUNT(distinct profile_id) from userprofile_...) +
(select COUNT(distinct profile_id) from productions_...) AS total