2017-06-14 114 views
0

我有一個表中這些值稱爲廣告:忽略MySQL的重複條目選擇使用DISTINCT關鍵字

id   sitecatid  locationid 
1    12   3 
2    12   6 
3    12   8 
4    12   8 
5    12   8 
6    10   18 
7    13   20 
8    14   21 

我想返回的結果是這樣的:

sitecatid  locationid 
    12   3 
    10   6 
    13   8 
    14   18 
        20 
        21 

基本上我只想要具有唯一sitecatid 和locationid的任何記錄的第一個實例。

UPDATE:

我想這個查詢,但結果不正確:

SELECT DISTINCT sitecatid, locationid 
    FROM advertisements 
    WHERE MATCH (sitetitle,sitedescription) 
AGAINST ('$q' IN BOOLEAN MODE) AND status='approved' 

結果對於上面的查詢:

sitecatid  locationid 
    12   3 
    12   6 
    12   8 
    10   18 
    14   20 
    13   21 

UPDATE:

我可以用絲束查詢一個用於sitecatid和SECEND爲locationid像:

SELECT DISTINCT sitecatid 
     FROM advertisements 
     WHERE MATCH (sitetitle,sitedescription) 
    AGAINST ('$q' IN BOOLEAN MODE) AND status='approved' 

SELECT DISTINCT locationid 
     FROM advertisements 
     WHERE MATCH (sitetitle,sitedescription) 
    AGAINST ('$q' IN BOOLEAN MODE) AND status='approved' 

,但我想用一個查詢對於這兩個

+0

我不都 – WhatsThePoint

+0

讓您的排序模式,這是我的查詢:SELECT * FROM廣告 WHERE MATCH(sitetitle,sitedescription) AGAINST( '$ Q' IN BOOLEAN MODE)和狀態= '批准' –

+2

我認爲這是不可能的,因爲給定表的第6行只包含staticatid 10和locationid 18,但要求顯示行6的值sitecatid 10和行6的loctionid 6。 2'在一個'row'(即)你問在單行 – Srini

回答

0

我看到的唯一方法實現這個目的是爲了檢索一列中的數據,而不是兩個,因爲你試圖從一行中的不同記錄中獲取值,我認爲這是不可能的。

SELECT 'SITECATID' UNION 
SELECT DISTINCT sitecatid 
    FROM advertisements 
    WHERE MATCH (sitetitle,sitedescription) 
    AGAINST ('$q' IN BOOLEAN MODE) AND status='approved' UNION 
SELECT 'LOCATIONID' UNION 
SELECT DISTINCT locationid 
    FROM advertisements 
    WHERE MATCH (sitetitle,sitedescription) 
    AGAINST ('$q' IN BOOLEAN MODE) AND status='approved'; 
+0

謝謝你,但這不工作 –

+0

@ebrahimbabavand,你能否詳細說明一下?我只是將你的查詢結合起來,併爲它們中的每一個添加一個文字標題。 – jzeta

+0

This is now working im using this query '$ get =「SELECT *,sitecatid,COUNT(*)as count FROM advertisements WHERE MATCH(sitetitle,sitedescription)AGAINST('$ q'in BOOLEAN MODE)AND status = '批准' GROUP BY sitecatid 「;' '$ GET =」 SELECT *,locationid,COUNT(*)作爲計數與來自廣告WHERE MATCH(sitetitle,sitedescription)AGAINST( '$ q' IN布爾模式) status ='批准'GROUP BY locationid「;' –