获取多行的年份部分

时间:2014-08-20 19:44:52

标签: php mysql sql

我有一个名为" picturevents"的SQL表。存储了存储图片的所有事件。

我现在想在我的页面上实现一个下拉菜单,用户可以选择他希望显示图片的年份。 为此我需要从我的数据库中收到所有年份。

我现在在我的php脚本中有以下功能(完全正常):

function getPictureYears(){

    $ret = mysqli_query($this->link, "SELECT `id` FROM `pictureevents` WHERE 1");
    $array = null;
    while($row = mysqli_fetch_array($ret, MYSQL_ASSOC)){
        $array[] = $row;
    }

    for($i=0; $i < sizeof($array); ++$i){
        $id = $array[$i]['id'];
        $array[$i]["year"] = mysqli_fetch_row(mysqli_query($this->link, "SELECT EXTRACT(YEAR FROM ( SELECT `date` FROM `pictureevents` WHERE `id` = $id))"))[0];
    }
    return $array;  
}

如果我可以简化它,我会很高兴。 我发现了以下功能:

SELECT EXTRACT(YEAR FROM (SELECT `date` FROM `pictureevents` WHERE 1))

只要子查询只返回一行,当表中有多行时,SQL报告就可以了。

     1242 - Subquery returns more than 1 row 

如何绕过错误,但仍然在做什么&#34;在SQL&#34;?它甚至可能吗?

BTW:我总是试图在SQL中尽可能地做的原因是:他们的代码比我写的要复杂得多,它简化了我的代码。

1 个答案:

答案 0 :(得分:1)

SELECT distinct year(`date`) FROM `pictureevents`

返回pictureevents中的条目存在的所有年份(每年一次)。