#1241 - 当从两个表中选择时,操作数应包含1列

时间:2017-10-27 22:51:50

标签: mysql

我使用此查询时出现此错误

   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有图像文件,我尝试为每个广告拿一个文件

任何帮助

2 个答案:

答案 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