Php mysql子查询中的限制
我对MySQL语句有问题 我有这个:Php mysql子查询中的限制,php,mysql,json,limit,Php,Mysql,Json,Limit,我对MySQL语句有问题 我有这个: SELECT ad.*, (SELECT img.image FROM '.$this->config->db_prefix.'_images AS img WHERE img.aid = ad.aid LIMIT 1) AS img FROM '.$this->config->db_prefix.'_adverts ad WHERE fid = :fid ORDER BY cr_date DESC 这很
SELECT ad.*,
(SELECT img.image
FROM '.$this->config->db_prefix.'_images AS img
WHERE img.aid = ad.aid LIMIT 1) AS img
FROM '.$this->config->db_prefix.'_adverts ad
WHERE fid = :fid
ORDER BY cr_date DESC
这很好,但我需要从\u images
表中获取所有图像,因此如果我删除LIMIT 1
,我将获得
Cardinality violation: 1242 Subquery returns more than 1 row
SQL的结果作为JSON输出。您遇到的问题是,当您说select时,mysql希望一次得到一个条目。看看mysql连接语句 您可以使用MySQL聚合函数:
SELECT ad.*, (SELECT GROUP_CONCAT(img.image) FROM '.$this->config->db_prefix.'_images AS img WHERE img.aid = ad.aid) AS img FROM '.$this->config->db_prefix.'_adverts ad WHERE fid = :fid ORDER BY cr_date DESC
然后在php或javascript中使用它
SELECT ad.*, (SELECT GROUP_CONCAT(img.image) FROM '.$this->config->db_prefix.'_images AS img WHERE img.aid = ad.aid) AS img FROM '.$this->config->db_prefix.'_adverts ad WHERE fid = :fid ORDER BY cr_date DESC