我有一个名为" 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中尽可能地做的原因是:他们的代码比我写的要复杂得多,它简化了我的代码。答案 0 :(得分:1)
SELECT distinct year(`date`) FROM `pictureevents`
返回pictureevents
中的条目存在的所有年份(每年一次)。