我有一张有两个字段的表;名字和名字名字
我想选择Distinct lastnames但显示第一个&结果中的姓氏......例如:
'SELECT DISTINCT lastname FROM people
将只返回姓氏。我怎样才能显示名字?
答案 0 :(得分:2)
SQL通常不会对歧义做出很好的反应。如果您只想包含一个姓氏实例,但任何一个对应的名字,您必须描述如何选择哪个名字(即使您并不在意)。也许:
SELECT MIN(firstname), lastname
FROM ...
GROUP BY lastname
答案 1 :(得分:0)
假设您有这些数据:
LastName FirstName
Jones Bob
Jones Dave
你想同时展示“Bob Jones”和“Dave Jones”吗? 然后你会这样做:
SELECT DISTINCT FirstName,LastName FROM people
如果那不是你想要的,你如何确定使用哪个名字?
答案 2 :(得分: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
非常简单但很好的教程,我认为完美适用!
答案 3 :(得分: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和分析函数,因此很难随机化这样的事情。