java - 如何将 SQL 结果集输出限制为 1 个结果而不是每个查询结果?

标签 java mysql sql jsp while-loop

我正在开发一个网络应用程序,其中包含一个搜索功能,当用户提交与该餐厅匹配的查询时,该功能会返回该餐厅。

例如,如果用户输入“披萨”并输入“威士忌”,我希望结果输出匹配的餐厅一次。

相反,这个精确的查询会导致餐厅名称出现多次。

表格:

Foodtbl Drinkstbl Restaurantstbl

SQL 代码:

" SELECT r.restname, r.type, r.location, r.website, r.reviews, r.PageLink"
                                    + " FROM restaurants r, food f, drinks d"
                                    + " WHERE SOUNDEX(f.foodcategory) = SOUNDEX(?)"
                                    + " AND SOUNDEX(d.drinkvariety) = SOUNDEX(?)"
                                    + " AND r.restid = f.restid"
                                    + " AND r.restid = d.restid");

While循环结果:

<% while (restResults.next()) { %>
                                    <td><%= restResults.getString("restname") %></td>
                                    <td><%= restResults.getString("type") %></td>
                                    <td><%= restResults.getString("location") %></td>
                                    <td><a href="<%= restResults.getString("website") %>"</a>Go to Website</td> 
                                    <td><a href="<%= restResults.getString("reviews") %>"</a>Go to Reviews</td>
                                    <td><a href ="<%= restResults.getString("PageLink") %>"</a>More Info</td>

这是我的 SQL 语句的问题还是循环问题?

谢谢。

最佳答案

由于您仅从餐厅中选择字段,并且不使用聚合函数,因此您可以添加 DISTINCT
这样返回的记录将是唯一的。

此外,最好使用更新的 JOIN 语法,而不是过时的逗号语法。

" SELECT DISTINCT r.restname, r.type, r.location, r.website, r.reviews, r.PageLink"
  + " FROM restaurants r"
  + " JOIN food f ON f.restid = r.restid"
  + " JOIN drinks d ON d.restid = r.restid"
  + " WHERE SOUNDEX(f.foodcategory) = SOUNDEX(?)"
  + "   AND SOUNDEX(d.drinkvariety) = SOUNDEX(?)");

关于java - 如何将 SQL 结果集输出限制为 1 个结果而不是每个查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54786249/

相关文章:

mysql - 添加一个子查询会使查询变慢一点,添加另一个子查询会使查询变慢

c# - OneDrive 下载 .sdf 文件后的本地数据库 "no format for SQL server Compact"

java - Maven 将实际 jar 生成为 .jar.original 而不是 .jar 文件

java - Jetty 类加载问题

mysql - Yii2、ActiveQuery、subQuery 没有带 ID 的条目

mysql - 隐藏数据库查询中的第一行

sql - 如何动态屏蔽通过 Azure 保存为 json 的数据?

java - 如何仅为用户自己的端点启用请求

java - 当值大于 x 时从 map 中删除的最佳方法是什么

c# - 将 C# Windows 窗体应用程序连接到 Sql Server