current <> 0
我需要知道: 对于每张专辑,专辑是当前的吗?
我试过了:
"SELECT *, ".$subquery." AS current FROM tbl_album"
其中$subquery
是:
SELECT EXISTS( SELECT 1 FROM tbl_icon2album JOIN tbl_album ON tbl_album.id=tbl_icon2album.albumID WHERE tbl_icon2album.b_current_in_timeproof = 0)
但这不起作用。我收到消息“ 1064您的SQL语法错误”
有趣的是,子查询作为一个独立的工作正常。此外,主查询工作正常如下:
SELECT *, 1 AS current FROM tbl_album
因此,如果子查询有效,并且主查询有效,为什么它们不能一起工作?
post scriptum: this question中提供了解决此问题的有效解决方案。
答案 0 :(得分:2)
这里不需要子查询,试试这个:
SELECT a.albumId,
IF( SUM(IF(i.current<>1,1,0)) = 0,'Current','Not Current') as IsCurrent
FROM tbl_album a
LEFT JOIN tbl_icon2album i ON i.albumId = a.albumId
GROUP BY a.albumId
根据图标当前状态的总和更新查询以反映相册是否是最新的。
更新:将i.current&lt;&gt; 0更改为i.current&lt;&gt; 1
答案 1 :(得分:0)
所以我在这里做了一些猜测,因为你没有提供表格的结构。您正在尝试选择所有相册,并说明它们是否为“当前”,其中“当前”指定为具有一个或多个当前图标:
SELECT
IF(
tbl_icon2album.current != 0,
"current",
"not current"
) AS isAlbumCurrent,
tbl_album.*
FROM tbl_album
LEFT JOIN tbl_icon2album ON
tbl_album.id=tbl_icon2album.albumID
GROUP BY tbl_album.id;