当我只需要一个时,数据库表连接显示相同行的多个条目

时间:2012-02-10 10:06:11

标签: 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_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 />";
}   

这会打印出我想要的多个条目。只是想知道是不是我做错了什么?

2 个答案:

答案 0 :(得分:1)

试试这个:

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注入。

答案 1 :(得分:1)

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

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