2017-03-06 55 views
0

我有SQL選擇查詢與我正在使用內部連接,我得到一些值,但與重複。我想要獨特的值,我正在使用DISTINCT,但它不起作用。如何通過內部連接獲取不同的值?

select DISTINCT 
    cy_affiliates_clickthroughs_tbl.*, 
    cy_affiliates_tbl.email, 
    cy_affiliates_tbl.firstname 
from 
    cy_affiliates_clickthroughs_tbl 
    inner join cy_affiliates_tbl on 
    cy_affiliates_clickthroughs_tbl.refid = cy_affiliates_tbl.referrer 
where 
    cy_affiliates_clickthroughs_tbl.refid = '" . $_SESSION['user_id'] . "' 
    AND date BETWEEN '$start_date' AND date BETWEEN '$start_date' 
    AND '$end_date' 
ORDER BY date DESC", OBJECT; 

我想獲得不同的電子郵件和名字值。

+0

它可以填充多個行數據嗎? 儘可能不同的電子郵件和名字不是來自同一行數據 – Kasnady

+0

它應該通過電子郵件ID顯示不同的結果,但它顯示我相同的一行數據4次在前臺的同一個表中。請檢查。 – Ankit

+0

請您當前的查詢 – Kasnady

回答

0

您應該從您的選擇中刪除cy_affiliates_clickthroughs_tbl.*

如果你只想選擇不同的電子郵件和名字,那就是你應該有的。

您的where子句中可能存在問題,因爲date BETWEEN '$start_date' AND date BETWEEN '$start_date' AND '$end_date'是錯誤的。 你可能意思是date BETWEEN '$start_date' AND '$end_date'

-1

您可以通過使用GROUP BY獲取姓名和電子郵件不同的值:

select 
    cy_affiliates_tbl.email, 
    cy_affiliates_tbl.firstname, 
    cy_affiliates_clickthroughs_tbl.* 
from 
    cy_affiliates_clickthroughs_tbl 
    inner join cy_affiliates_tbl on 
    cy_affiliates_clickthroughs_tbl.refid = cy_affiliates_tbl.referrer 
where 
    cy_affiliates_clickthroughs_tbl.refid = '" . $_SESSION['user_id'] . "' 
    AND date BETWEEN '$start_date' 
    AND '$end_date' 
GROUP BY cy_affiliates_tbl.email, cy_affiliates_tbl.firstname 
ORDER BY date DESC", OBJECT; 

需要注意的是,你會錯過一些從cy_affiliates_clickthroughs_tbl的結果,以確保姓名和電子郵件不同值。

+0

沒有先生不工作它顯示我什麼都沒有。請再次檢查並儘快回覆我,謝謝 - Ankit – Ankit

+0

這不是一羣人的作品;當使用group by時,select中的所有列必須與某個函數(如sum)聚合或放在組中,按照我提到的方式,用 –

+0

@ stefano-zanini - 請試試組。它確實「有效」(沒有任何羣體功能,例如總和),儘管我的回覆中並未按照說明推薦。 MySQL 5.7中的默認行爲強加了一個限制(可以放棄),其中GROUP BY中需要SELECT中的所有列,但MySQL v5.6或更低版本中可以有不屬於SELECT的group中的列。 – thatsaru

相關問題