Получавате дублирани колони, защото както имате, вие правите заявки от T1 И T2. Така че, освен ако изрично не кажете покажи ми само T1.*, той ще вземе колони от ДВЕТЕ препратки към псевдоними на таблици.
Тъй като вашата заявка изпълнява ИЛИ за датите, вероятно ще получите и декартов резултат.
Сега познавам структурата на вашата таблица, но може да сте по-добре с изрична заявка нещо като...
SELECT
t1.day,
t2.day as OtherDay,
t1.quality,
t1.anotherColumn,
t2.OtherAnotherColumn,
t1.thirdColumn,
t2.OtherThirdColumn
FROM
my_table t1
join my_table t2
on t1.quality = t2.quality
AND t2.day = '2015-01-09'
where
t1.day = '2015-01-08'
Имайте индекс на вашата "my_table" въз основа на (ден, качество), за да оптимизирате заявката. И можете просто да продължите да добавяте по двойки колоните, които се опитвате да сравните между day1 и day2. T1 ще върне само тези, свързани с първия ден, а псевдонимът на T2 ще се покаже само за съвпадащи записи за втората дата.
Сега, ако има само записи от страната T1 без съответстващ запис T2 за въпросното качество и дата, но все пак искате да ги видите, тогава просто променете JOIN на LEFT JOIN.