根据另一个表中的最小值选择表的属性

时间:2014-01-02 05:40:08

标签: php sql select sql-order-by limit

我的表结构是

Table structure

我希望上传最新的用户视频

我想做的是:

  

“选择记录最少时间戳的记录的video_id,其中userid ='something'”

我目前拥有的是:

$recent_video = "$db->query("
  SELECT video_id 
  FROM video_primary 
  ORDER BY timestamp DESC LIMIT 1 
  WHERE userid = '$userid'"
) or die($db->error);"`


while($row=mysqli_fetch_assoc($recent_video))
{
  $video_id=$row['video_id'];
}
echo $video_id;

我的表数据是

table data

如何获取用户上传的最新视图?

3 个答案:

答案 0 :(得分:2)

WHERE部分

之后写FROM子句

试试这个:

SELECT vp.video_id 
FROM video_primary vp
WHERE userid='$userid'
ORDER BY vp.timestamp DESC 
LIMIT 1;

答案 1 :(得分:1)

试试这个

$recent_video=$db->query("select video_id from video_primary where userid='$userid' 
    ORDER BY timestamp DESC LIMIT 1 ") or die($db->error);

而不是

$recent_video="$db->query("select video_id from video_primary ORDER BY timestamp DESC
    LIMIT 1 where userid='$userid'") or die($db->error);"

您在order by和limit 1之后使用where子句,这是一个语法错误。见教程

Tutorial

答案 2 :(得分:1)

Query语句中的每个子句都有一个特定的序列。以下是序列:

  • 选择
  • 其中
  • 排序
  • 限制

因此,按照上面的顺序,您应该像下面一样更正您的查询。另外,你应该正确地放置双引号(“)。

$recent_video = $db->query(" SELECT video_id FROM video_primary WHERE userid = '$userid' ORDER BY timestamp DESC LIMIT 1" ) or die($db->error);