Mysql 数据库表联接显示相同行的多个条目,而我只需要一个条目
我正在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 =
$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
,它就是为此而诞生的!