2015-01-15 60 views
1

我是mySQL和PHP的新手,請耐心等待。MySQL:獲取重複查詢字段的重複數據

我該如何做到這一點,如果我的查詢有重複的字段,檢索到的數據將有重複的查詢字段的重複數據。

一個例子是這樣的:

查詢ID = 34,54,21,21,50(已在該命令我希望他們是在)

我希望數據庫返回

user_icon爲ID = 34,對於user_icon ID = 54,對於user_icon ID = 21,對於user_icon ID = 21,和用於user_icon ID = 50。

而且不只是一個數據返回的重複ID 21。

這裏是我使用的那一刻代碼:

$thumb = "SELECT thumbnail from users WHERE id IN (".$idsearch.") ORDER BY FIELD(id , ".$idsearch.")"; 
    $search = $con->prepare($thumb); 
    $search -> execute(); 

    $pics = $search->fetchAll(); 
    foreach($pics as $pic) { 
    $thumbnail[] = $pic['thumbnail']; 
    } 

感謝您的幫助!

+0

如果你確實需要兩次的值/結果,你應該在從db中獲取後在php中分配兩次。你可以從數據庫中獲得兩次,即分別查詢每個ID或進行聯合,但這一切都沒有意義。最好的辦法是不分配兩次,而是在正確的地方使用正確的變量。 – evilive

回答

0

我現在無法想到MYSQL查詢。但是,如果性能比較是一個關心的問題,你可以使用一些東西一樣

$thumb = "SELECT thumbnail from users WHERE id = ?"; 
$search = $con->prepare($thumb); 

foreach($idsearch as $id) { 
    $search->execute(array($id)); 
    $pics = $search->fetch(PDO::FETCH_ASSOC); 
    $search->closeCursor(); 
    $thumbnail[] = $pic['thumbnail']; 
} 

PDO將編譯SQL查詢和執行會比普通的SQL查詢速度更快。

0

SQL查詢返回表中與where條件匹配的每一行。如果您想過濾重複項,則需要明確執行此操作(例如,使用關鍵字distinct)。 由於您的查詢沒有任何特殊處理,因此如果它們存在,它將返回重複項,因此您的代碼沒問題。