如何从MySql中的表中获取最小id

时间:2015-03-09 07:42:06

标签: php mysql

我编写了一个MySql查询来获取与最小id相关的列。看起来像这样

SELECT min(id) as ID,feed , idpropiedad FROM `registrofeed` WHERE feed=21

该表有4行,如下所示

enter image description here

所以根据我写的函数

function setLC()
 {

     $sql = "
SELECT min(id) as ID
  , feed 
  , idpropiedad 
  FROM `registrofeed` 
 WHERE feed=21
";
     $result = $this->localDb->execute($sql);
     $row=mysql_fetch_array($result);
     echo $sql;
     echo $row['idpropiedad'];
     $this->lastCode = $row['idpropiedad'];
 }

返回idpropiedad的空字符串

任何人都可以帮我解决我出错的地方

提前致谢

4 个答案:

答案 0 :(得分:3)

我认为您实际需要的查询是:

SELECT id, feed, idpropiedad 
  FROM registrofeed 
 WHERE feed = 21 
 ORDER BY id ASC
 LIMIT 1

MIN()为您提供列中通常最低的值,它不会影响其余列。如果您希望整个具有最低id,则无效。

为了说明,如果你真的想在这里使用MIN,你必须这样做:

SELECT id, feed, idpropiedad 
  FROM registrofeed 
 WHERE id = (SELECT MIN(id) FROM registrofeed WHERE feed = 21)

答案 1 :(得分:2)

你可以这样做一个更好的查询:

 $sql = "
SELECT id as ID
  , feed 
  , idpropiedad 
  FROM `registrofeed` 
 WHERE feed=21
 HAVING MIN(id)
";

这将仅返回具有最小ID编号的一行。它比使用ORDERING AND LIMIT 1更具可读性。

答案 2 :(得分:0)

尝试将您的选择查询视为

SELECT * FROM registrofeed WHERE feed ='21'ORDER BY id ASC LIMIT 1

这将获取具有最小id的行。

希望有所帮助

答案 3 :(得分:0)

试试这个

$sql = "SELECT min(id) as ID,feed , idpropiedad FROM `registrofeed` WHERE feed='21' order by id  asc";