【发布时间】:2014-02-05 23:24:20
【问题描述】:
(SELECT * FROM app_detailsvvv as dtable INNER JOIN new_apps ON
new_apps.trackId=dtable.trackId WHERE primaryGenreName='Games'
AND composed='1' AND new_apps.top>0)
UNION (SELECT * FROM app_detailsvvv as dtable WHERE primaryGenreName='Games')
LIMIT 12
错误:
#1222 - The used SELECT statements have a different number of columns
在 new_apps 上有一些字段不在 app_detailsvvv 中,我怎样才能以某种方式屏蔽联合中的第二个查询。
编辑:
(SELECT dtable.* FROM app_detailsvvv as dtable INNER JOIN new_apps ON new_apps.trackId=dtable.trackId WHERE primaryGenreName='Games' AND composed='1' AND new_apps.top>0) UNION (SELECT * FROM app_detailsvvv as dtable WHERE primaryGenreName='Games') LIMIT 12
当我添加 ORDER BY new_apps.top ASC 时我得到了这个新错误:
#1250 - Table 'new_apps' from one of the SELECTs cannot be used in global ORDER clause
【问题讨论】:
-
您的查询实际上没有意义。它从
app_detailsvvv表中选择12 个任意行,其中primaryGenreName='Games'。我怀疑您想优先考虑退货,但union肯定会混淆行。 -
我想按 top asc 选择 order,其中只有 top trackIds 可用,如果没有,用分页用完然后在 app_detailsvvv 上选择
-
@ibennet 。 . .这就是我回答中的查询所做的。这不是您的查询所做的,即使对于
union中的列数是固定的。