我使用此查询时出现此错误
SELECT id,title,files,price,auction_start,
(SELECT * FROM `phi_files` where id in(d.files) order by id desc limit 1)
FROM phi_ads d Where cat=1 GROUP BY id DESC Limit 6
我有两个表phi_ads表有广告,phi_files有图像文件,我尝试为每个广告拿一个文件
任何帮助
答案 0 :(得分:0)
我看到id
在两个表中都重复,请尝试在子选择中phi_files.id
SELECT id,title,files,price,auction_start,
(SELECT * FROM `phi_files` where phi_files.id in(phi_ads.files) order by phi_files.id desc limit 1)
FROM phi_ads Where cat=1 GROUP BY id DESC Limit 6
答案 1 :(得分:0)
当子查询用作表达式时,它只能返回一个值。因此查询必须返回单行,并且该行必须具有单个列。
您使用LIMIT 1
解决了多行问题。要解决多列问题,请将*
更改为您需要的特定列。
我也想知道你为什么要使用WHERE id IN (d.files)
。由于列表中只有一个值,因此应为WHERE id = d.files
。或者,如果d.files
是以逗号分隔的列表(我怀疑来自列名称),则需要使用WHERE FIND_IN_SET(id, d.files)
。请参阅Query with multiple values in a column。