4

これがクエリです

select count(*), 
       ss.pname, 
       ttu.user_id, 
       ttl.location_name , 
       group_concat(em.customer_id), 
       count(em.customer_id)
  from seseal as ss, 
       track_and_trace_user as ttu, 
       track_and_trace_location as ttl, 
       eseal_mapping as em
 where ss.real_id=em.e_id 
   and em.user_id=ttu.user_id 
   and ttu.location_id=ttl.location_id
group by ss.pname, ttu.user_id, ttl.location_name 
having count(em.customer_id)>1 ;

結果は次のとおりです。

+----------+----------------+---------+---------------+------------------------------+-----------------------+
| count(*) | pname          | user_id | location_name | group_concat(em.customer_id) | count(em.customer_id) |
+----------+----------------+---------+---------------+------------------------------+-----------------------+
|        6 | Nokia N91      |       1 | Malad         | 60,51,60,51,58,58            |                     6 |
|        2 | SUPERIA 1000gm |       4 | Raichur       | 51,46                        |                     2 |
|        5 | SUPERIA 1000gm |       5 | west bengal   | 51,46,51,51,46               |                     5 |
|        2 | SUPERIA 500gm  |       4 | Raichur       | 59,59                        |                     2 |
|        3 | SUPERIA 500gm  |       5 | west bengal   | 59,46,59                     |                     3 |
+----------+----------------+---------+---------------+------------------------------+-----------------------+

問題は、結果セットでわかるように、一部の行の最後の 2 番目の列customer_idsが重複しており、一部の行が一意であることです。そして最後の列はその数を示しています。
ここで、3 行目を選択します。51 と 46 という 2 つの顧客 ID があり、これらはその行で重複しているため、この行の最後の列には 2 が含まれている必要があります。
同様に、最後の行の場合、最後の列には 1 が含まれている必要があります。重複しているのは1 つだけですcustomer id。つまり 59です。
したがって、正確な問題を理解している場合、2 行目は重複する顧客 ID が含まれていないため、この結果セットの一部ではありません。

4

1 に答える 1

1

どうですか:

group_concat(distinct em.customer_id)

count(distinct em.customer_id)
于 2012-11-09T18:12:09.920 に答える