2010-10-15 60 views
0

我有兩個字段的表;姓名&姓氏不同的問題

我想SELECT DISTINCT lastnames但結果同時顯示第一&姓氏...例如:

'SELECT DISTINCT lastname FROM people 

將僅返回姓氏。我怎樣才能顯示名字?

+0

即使有可能,這樣的查詢有什麼用途?想想看,沒有一個單獨的姓氏與分組的姓氏關聯......也許你想隨機選擇一個人? – 2010-10-15 02:52:35

+0

正如我指出的那樣,這顯然是不可能的(正如你打算的) – 2010-10-15 02:54:49

+0

只需選擇所有數據,然後在應用程序的表示層中實現這個分組概念 – RyanHennig 2010-10-15 02:57:17

回答

2

SQL通常不會很好地解決模糊問題。如果你只想包含姓氏的一個實例,但是任何一個名字都相應,你必須描述如何選擇哪個名字(即使你不太在意)。也許:

SELECT MIN(firstname), lastname 
FROM ... 
GROUP BY lastname 
0

比方說,你有這樣的數據:

LastName FirstName 
Jones  Bob 
Jones  Dave 

你想顯示兩個「鮑勃·瓊斯」和「戴維·瓊斯」? 然後,你會怎麼做:

SELECT DISTINCT名字,姓氏FROM人

如果這不是你想要什麼,你如何確定使用哪個名字?

0
<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("my_db", $con); 

$result = mysql_query("SELECT * FROM Persons"); 

while($row = mysql_fetch_array($result)) 
    { 
    echo $row['FirstName'] . " " . $row['LastName']; 
    echo "<br />"; 
    } 

mysql_close($con); 
?> 

來自

http://www.w3schools.com/php/php_mysql_select.asp

很簡單,但很好的教程,我認爲適用於完美!

0

考慮你正在使用MySQL,該查詢工作,並返回一個「隨機」的名字(它可能總是返回相同的一段時間,然後更新之後更改/刪除/插入查詢):

SELECT FirstName, LastName FROM people GROUP BY LastName 

請注意此查詢不會工作在任何智能RDMBS(即不是MySQL)上。一個好辦法做到這一點(實際上是隨機挑選的名字)是通過使用分析功能(PostgreSQL的語法):

WITH TT AS (
    SELECT FirstName, LastName, ROW_NUMBER() OVER(PARTITION BY LastName ORDER BY random()) AS R 
    FROM people 
) 
SELECT FirstName, LastName 
FROM TT 
WHERE R = 1; 

不幸的是你,MySQL不知道CTE和分析功能,使得它更難隨機化這樣的事情。