2011-09-09 78 views
1

我試圖做一個搜索引擎,我想是選擇哪些是兩列不同的行。使用「和」使用說明「SELECT DISTINCT」

$sorgu = mysql_query("SELECT DISTINCT name AND surname FROM users"); 

    while($cek = mysql_fetch_array($sorgu)) 
    { 
     $display = $cek['name']." ".$cek['surname']; 

     if(strcmp($written,$display) == 0) 
     { 
      echo $display; 
     }  
    } 

我在這裏得到未定義指數誤差爲他們兩個,名稱和surname.When我刪除「和」聲明,代碼工作正常。我該如何使用「AND」在這裏,同時意味着比較兩列? 感謝

+0

那是什麼意思?名字和姓是否應該彼此不同?或者名字+姓氏組合應該是獨一無二的?或者是別的什麼? – NullUserException

+2

使用GROUP BY而不是DISTINCT超過1個字段;將其更改爲DISTINCT id; –

+0

姓名+姓應該是唯一的 – user893970

回答

2

如果你試圖拉DISTINCT姓名應該是

SELECT DISTINCT Name, Surname 
FROM Users 

GROUP BY Name, Surname

這將使您喜歡的結果:

Name | Surname 
------------------ 
    John | Smith 
    John | Doe 
    Doug | Smith 

它防止效果等:

Name | Surname 
------------------ 
    John | Smith 
    John | Doe 
    John | Smith 
+1

+1。我相信'DISTINCT'適用於'SELECT'語句中的所有內容。 – jadarnel27

+1

這是正確的,如果你想要一個'DISTINCT Name'和'DISTINCT Surname',那麼你需要使用子查詢來完成這個。 – jon3laze

+2

如果已應用DISTINCT,則GROUP BY不是必需的 – ajreal

0

使用GROUP BY而不是DISTINCT超過1場,將其更改爲DISTINCT ID;

變化

$sorgu = mysql_query("SELECT DISTINCT name AND surname FROM users"); 

$sorgu = mysql_query("SELECT name, surname FROM users GROUP BY name, surname"); 
0

在大多數數據庫的一個DISTINCT(或UNIQUE)相當於一個GROUP BY ... ORDER BY,而GROUP BY通過本身是一個無序DISTINCT

This:

  • SELECT DISTINCT name, surname 
    FROM users 
    

應該等於:

  • SELECT name, surname 
    FROM  users 
    GROUP BY name, surname 
    ORDER BY name, surname 
    

這是類似的:

  • SELECT name, surname 
    FROM  users 
    GROUP BY name, surname 
    

所有這些應該給你一組獨特的記錄,但最後應該產生最快的結果。

此外,在碼級聯的isntead,你也可以做的是,在數據庫:

  • SELECT DISTINCT concat(name,' ',surname) 
    FROM users