2013-03-19 2 views
0

как я могу сделать что-то вроде этой работы?с использованием того же поля в подзапросе mysql

INSERT INTO age.page(domain,title_count,youtube_count,ipaddress,updated) 
SELECT * FROM 
(
    SELECT domain, 
    COUNT(domain) AS titlecount, 
    (SELECT COUNT(*) FROM table2 WHERE title = table1.title) AS YoutubeCount, ipaddress 
    NOW() AS timeNow 
    FROM table1 
    GROUP BY domain 
    ORDER BY title DESC 
) a; 

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

причина, по которой я хочу сделать это, поэтому мне не нужно запускать два запроса, а не только один.

ответ

1

Вы можете сделать это COUNT в подзапрос, а затем JOIN его с первой таблицей:

INSERT INTO age.page(domain, title_count, youtube_count, ipaddress, updated) 
SELECT * FROM 
(
    SELECT 
     domain, 
     COUNT(domain) AS titlecount, 
     t2.titlecount AS YoutubeCount, 
     ipaddress, 
     NOW() AS timeNow 
    FROM table1 
    INNER JOIN 
    (
     SELECT title, COUNT(*) Titlecount 
     FROM table2 
     GROUP BY title 
    ) AS t2 ON t2.title = table1.title 
    GROUP BY domain 
    ORDER BY table1.title DESC 
) a; 
+0

Я получаю 'Код ошибки: 1052. Колонка«название»в списке полей является ambiguous' –

+1

@ dev- Ria Разрешить его с помощью псевдонима try 'table1.title' или' t2.title' вместо этого увидеть мое редактирование. –

+0

спасибо !!! это сработало очень хорошо! –