2013-01-10 23 views
1
SELECT 
    * 
FROM `catalog_webdesign_products` t 
INNER JOIN tbl_member_registration t1 ont.userid=t1.fld_loginid 
WHERE 1 
    AND t1.fld_member_category_level<9 
    AND t.product_img IS NOT NULL 
ORDER BY RAND() LIMIT 5 

在此查詢中,我需要具有唯一用戶標識的行。我曾嘗試'按用戶組'進行分組,但隨後product_img的值爲空,即將進入結果集。帶內連接查詢的唯一結果集

+2

@goodmood從OP上面的「我試過,但也然後用空值product_img‘通過用戶ID組’在結果集來了。」 –

+0

@goodmood - 你可以使用'rollback'選項而不是再次編輯。 :) – hims056

回答

2

是的,你可以使用GROUP BY userid。但您的查詢似乎錯在這裏

INNER JOIN tbl_member_registration t1 on t.userid=t1.fld_loginid 
              ^------------------------space here 

試試這個

SELECT 
    * 
    FROM `catalog_webdesign_products` t 
    INNER JOIN tbl_member_registration t1 on t.userid=t1.fld_loginid 
    WHERE t1.fld_member_category_level<9 
    AND t.product_img IS NOT NULL 
    group by userid 
    ORDER BY RAND() LIMIT 5 

編輯:

SELECT 
    * 
    FROM (select * from `catalog_webdesign_products` where product_img IS NOT NULL) t 
    INNER JOIN tbl_member_registration t1 on t.userid=t1.fld_loginid 
    WHERE t1.fld_member_category_level<9 
    group by t.userid 
    ORDER BY RAND() LIMIT 5 
+0

當我使用** GROUP BY userid **時,它會給出唯一的結果,但product_img的空值也會出現在結果中。 – ujjwalwahi

+0

我已經試過這個查詢,但同樣的問題持續 – ujjwalwahi

+0

編輯,嘗試我編輯的答案 –

0

爲了獲得更好的性能,您應該移動條件T1到連接語句。你的問題可能是錯誤的JOIN條件。嘗試使用LEFT JOIN而不是INNER JOIN。

更多聯接:http://www.w3schools.com/sql/sql_join.asp

SELECT * 
FROM `catalog_webdesign_products` t 
LEFT JOIN tbl_member_registration t1 
ON (t.userid = t1.fld_loginid AND t1.fld_member_category_level < 9) 
WHERE t.product_img IS NOT NULL 
GROUP BY t.userid 
ORDER BY RAND() LIMIT 5