使用 UNION ALL 的顺序选择性查询
问题:
在数据库表中查找单行逐渐减少搜索条件。例如:
SELECT * FROM image WHERE name LIKE 'text' AND group_id = 10 LIMIT 1
如果没有得到结果,则执行:
SELECT * FROM image WHERE name LIKE 'text' LIMIT 1
如果仍然没有结果,执行:
SELECT * FROM image WHERE group_id = 10 LIMIT 1
这个过程可以用单个执行吗表达式?
解法:
SELECT * FROM image WHERE name = 'name105' AND group_id = 10 UNION ALL SELECT * FROM image WHERE name = 'name105' UNION ALL SELECT * FROM image WHERE group_id = 10 LIMIT 1;
解释:
通用解决方案:
通过向 UNION ALL 链添加额外的 SELECT 语句,可以将上述方法推广到任意数量的搜索参数。
排序的注意事项结果:
由于 LIMIT 子句适用于整个结果,因此排序并不是特别有用,因为只会返回第一行。
以上是UNION ALL with LIMIT 1 能否高效模拟顺序查询?的详细内容。更多信息请关注PHP中文网其他相关文章!