Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
首先将最流行的选项放在mysql的选择框中_Mysql_Html - Fatal编程技术网

首先将最流行的选项放在mysql的选择框中

首先将最流行的选项放在mysql的选择框中,mysql,html,Mysql,Html,我是mysql新手,但我有一个包含一些数据的数据库,按名称排序: <option value="4"> George </option> <option value="55"> John </option> <option value="13"> Paul </option> <option value="24"> Ringo </option> 乔治 约翰 保罗 林戈 我想把这个放在一个sel

我是mysql新手,但我有一个包含一些数据的数据库,按名称排序:

<option value="4"> George </option>
<option value="55"> John </option>
<option value="13"> Paul  </option>
<option value="24"> Ringo </option>
乔治 约翰 保罗 林戈 我想把这个放在一个select上,像这样:

   while($row = mysql_fetch_array($result) ){
        echo "<option value='".$row['id']."'>".$row['name']."</option>";
   }
<option value="55"> John (most popular)</option> 
<option value="4"> George </option>
<option value="13"> Paul </option>
<option value="24"> Ringo </option>
while($row=mysql\u fetch\u array($result)){
回显“$row['name']”;
}
但我想告诉select只在顶部放置一个选项,这是最流行的选择,如下所示:

   while($row = mysql_fetch_array($result) ){
        echo "<option value='".$row['id']."'>".$row['name']."</option>";
   }
<option value="55"> John (most popular)</option> 
<option value="4"> George </option>
<option value="13"> Paul </option>
<option value="24"> Ringo </option>
John(最受欢迎)
乔治
保罗
林戈
如何仅排除一行?我必须使用mysql\u fetch\u数组吗

在SQL上这样做更好吗?还是使用循环


谢谢

按人气排序怎么样?这并不完全是您所要求的,但它会简单得多,而且可能更符合逻辑?

您最好的选择是在SQL中执行此操作。不过,我们需要查看您的模式和当前的SQL才能正确地提供帮助。值得注意的是,您可以按两列排序,例如

SELECT * FROM foo ORDER  BY col1,col2

如果必须使用字母顺序,则可能必须将其拆分为两个查询,第一个查询仅获取该项,第二个查询列出其他项

我确信这是以线性时间运行的,排序不会更快(如果不是更慢的话)。

这应该可以:

(SELECT id, name||' (most popular)' AS name FROM table ORDER BY id DESC LIMIT 1)
UNION DISTINCT
(SELECT id, name FROM table)
运行查询,然后将其呈现为HTML。
另一种方法是在呈现HTML后使用JavaScript将id最高的元素移到顶部。

MyDB有5000多行。我只想要一次,就一排,就那个id 55。这是添加“人气”栏的最佳方式吗?这不会影响查询速度?添加一个名为at_top的布尔(bit)列,并将其包含在您的order by中。另外,在另一个表中显示受欢迎程度。客户表。我的大多数客户都来自同一个城市。你如何决定受欢迎程度?“最受欢迎的”是否会因客户或客户所在城市的不同而有所变化?作为一个发现“英国”被认为与美国其他国家放在一起很受欢迎并在那里浪费时间的人来说,这很烦人,请:在顶部复制您的受欢迎选项,不要将它们移到那里。