这是我的场景:我有两个不同的表:“订阅”表包含与用户网站订阅相关的所有信息,“评分”表包含订阅网站产品的分数。简化是这样的:
Subscriptions: 'id','user','place','created', etc.
Ratings: 'id','user','product','created',etc.
现在我需要 mysql 来返回我最近的 10 个项目,无论是订阅还是评分。到目前为止,找到的解决方案是进行两个不同的调用:
SELECT * FROM subscriptions WHERE ... ORDER BY created LIMIT 10.
有了这两个结果(20 个元素),我通过“created”对多维数组进行排序,并获得前 10 个(将结果保存在 $items 中):
$items = array_slice($items, 0, 10);
我怀疑这个解决方案效率不高,因为我在两次调用中得到它,并返回比我需要的更多的元素。我一直在阅读 UNION 运算符允许您一次选择多个不同的表,但列数相同。我的问题是,在一次调用中加入由公共字段(在我的情况下创建)排序的特定数量的不同类型元素的最有效方法是什么?不可能吗?非常感谢,感谢任何帮助,Jesús。