2013-06-21 60 views
0

我正在尋找更快的方法來運行這種statment的:與條件Mysql的選擇不重複值

SELECT * 
FROM `aukcje_przedmioty` 
WHERE (
(
    opis NOT 
    IN (
     SELECT opis 
     FROM aukcje_przedmioty 
     WHERE (aktywne =1 AND user_id =6) 
    ) 
) 
AND aktywne =0 
AND user_id =6 
) 

表aukcje_przedmioty

+0

發表表格aukcje_przedmioty的結構請 –

+0

結構:| id | user_id | title | opis | aktywne | – user2381796

+0

opis是一個文本,aktywne是int只有兩個值1或0,id和用戶id是int – user2381796

回答

0

你可以嘗試像

SELECT a.* 
FROM `aukcje_przedmioty` a 
JOIN 
(
    SELECT opis,user_id 
    FROM aukcje_przedmioty 
    GROUP BY opis,user_id 
    HAVING max(aktywne) = 0 
) x 
ON 
x.user_id = a.user_id and 
x.opis = a.opis 
WHERE user_id = 6 

http://sqlfiddle.com/#!2/16774/6

在你的設置上使用explain看看會發生什麼爲你最好的工作。

+0

謝謝,現在執行時間是可以接受的:) – user2381796