Mysql 数据库表联接显示相同行的多个条目,而我只需要一个条目

Mysql 数据库表联接显示相同行的多个条目,而我只需要一个条目,mysql,join,Mysql,Join,我正在mysql数据库上进行表连接 我希望结果只显示一次,但每次有与查询匹配的条目时都会显示 以下是我到目前为止的情况: $descquery = "SELECT streams.name, streams.desc, users.streamnumber FROM streams, users WHERE users.streamnumber = '$_POST[streamnumber]' AND users.streamnumber = streams.name"; $result =

我正在mysql数据库上进行表连接

我希望结果只显示一次,但每次有与查询匹配的条目时都会显示

以下是我到目前为止的情况:

$descquery = "SELECT streams.name, streams.desc, users.streamnumber FROM streams, users WHERE users.streamnumber = '$_POST[streamnumber]' AND users.streamnumber = streams.name";

$result = mysql_query($descquery) or die(mysql_error());

// Print out the contents of each row into a table 
while($row = mysql_fetch_array($result)){
    echo $row['name']. " - ". $row['desc'];
    echo "<br />";
}   
$descquery=“从流中选择streams.name、streams.desc、users.streamnumber,其中users.streamnumber='$\u POST[streamnumber]'和users.streamnumber=streams.name”;
$result=mysql\u query($descquery)或die(mysql\u error());
//将每行的内容打印到表格中
while($row=mysql\u fetch\u数组($result)){
echo$row['name']。“-”$row['desc'];
回声“
”; }
这会打印出我想要的多个条目。只是想知道我是不是做错了什么?

试试这个:

SELECT DISTINCT s.name, s.desc, u.streamnumber 
FROM streams s INNER JOIN users u
    ON u.streamnumber = '$_POST[streamnumber]'
   AND u.streamnumber = s.name

请记住,在查询中使用用户输入之前,必须始终对其进行清理,以避免sql注入。

必须使用DISTINCT子句,如下所示:

SELECT DISTINCT streams.name, streams.desc, users.streamnumber FROM streams, users WHERE users.streamnumber = '$_POST[streamnumber]' AND users.streamnumber = streams.name

谢谢。我刚刚加了“马吕斯建议的”这个词。@JamesG:这正是我在回答中的建议,在马吕斯的回答之前很久就发布了。请注意,使用
JOIN
语法连接表比使用
WHERE
连接表要好,因为它功能强大且灵活。在本例中,引擎将其转换为相同的执行计划,但不要将其作为规则使用。使用
JOIN
,它就是为此而诞生的!