2014-02-16 41 views
0

如何仅在姓名唯一时才显示姓氏?否则打印全名作为'姓氏,名字'。例如:在数据库中,您有:Ace Perez,Dan Perez,James Perez和Dan Bond。它应该显示是这样的:仅当姓氏不唯一时才显示名字

佩雷斯王牌佩雷斯丹·佩雷斯詹姆斯·邦德

它只能显示债券而不是债券丹,因为它是一个独特的姓氏。

这里是我的代码片段:

<?php 
$display = "SELECT * FROM main ORDER BY lastName ASC, firstName ASC"; 
$result = @mysql_query($display)or die(mysql_error()); 
while($row = mysql_fetch_array($result)){ 
    $lastName = $row['lastName']; 
    $firstName = $row['firstName']; 
    $score = $row['score']; 
    $totalScore = $row['totalScore']; 
    $percentage = ($score/$totalScore)*100; 
    echo "<tr>"; 
     echo "<td align='left'> $lastName </td>"; 
     echo "<td align='left'> $firstName </td>"; 
     echo "<td align='left'> $percentage </td>"; 
    echo "</tr>"; 
} 
    echo "</table>"; 
?> 

编辑:对不起,我很是新来的。该片段应该现在正确显示! :)

回答

0

如果你有一个主键,你可以使用一个简单的查询与CASEEXISTS;

SELECT 
    lastname, 
    CASE WHEN EXISTS 
    (SELECT 1 FROM test t2 WHERE t1.lastname=t2.lastname AND t1.id<>t2.id) 
    THEN firstname ELSE '' END firstname 
FROM test t1 

An SQLfiddle to test with

+0

我添加了主键:)非常感谢! –

1

您可以通过计算姓氏上的匹配数量来完成此操作。然后用这个条件select

select m.lastname, (case when cnt > 1 then m.firstname end) as firstname 
from main m join 
    (select lastname, count(*) as cnt 
     from main 
     group by lastname 
    ) ml 
    on m.lastname = ml.lastname; 
+0

[SQL小提琴](http://sqlfiddle.com/#!2/974d814/5) –