2010-03-23 3 views
1

Я хочу рассчитать, сколько уникальных логинов из 2 (или, вероятно, больше таблиц).MySQL, слияние двух или более таблиц перед выполнением запроса SELECT DISTINCT?

Я попытался это:

SELECT count(distinct(l1.user_id)) 
FROM `log_1` l1 
LEFT JOIN `log_2` l2 
ON l1.userid = l2.userid; 

Но это дает мне результат l1. Если я не положил l1 на li.userid (отчетливо), он сказал «неоднозначно».

Как объединить таблицу, а затем выбрать уникальный логин комбинированной таблицы?

РЕДАКТИРОВАТЬ:

Испытано: Я проверить счетчик (различны (l1.userid)) и подсчет (различны (l2.userid)). Это дает мне отличный результат.

+0

Можете ли вы определить, что вы подразумеваете под «комбинировать таблицу»? Вы хотите, чтобы пользователи отображались в любой таблице? Пользователи, которые появляются в обеих таблицах? Что-то другое? –

+0

@Mark Byers: Я думаю, что было бы более точным, если бы пользователи отображались на обеих таблицах правильно? Это занимает очень много времени, чтобы объединить 4 таблицы, более 2 минут, и я все еще жду сейчас. (Используя мой код выше, измените LEFT JOIN на INNER JOIN) – mysqllearner

ответ

1

Если вы используете LEFT JOIN, вы получите хотя бы одну строку в объединенном результате для каждой строки в l1, поэтому соединение совершенно не нужно, если вам просто нужен отдельный счетчик. Это даст вам тот же результат, как ваш запрос:

SELECT count(distinct(l1.user_id)) 
FROM `log_1` l1 

Может быть, вы хотите, INNER JOIN или UNION вместо этого? A UNION будет считать пользователя, если он появится в любой таблице. INNER JOIN будет считать их только в том случае, если они отображаются в обеих таблицах. Вот пример из UNION:

SELECT count(*) FROM (
    SELECT distinct(user_id) FROM `log_1` 
    UNION 
    SELECT distinct(user_id) FROM `log_2` 
) T1 

 Смежные вопросы

  • Нет связанных вопросов^_^