我有这个单一的查询。
$sql = "SELECT * FROM `my_table` WHERE type!='' AND (page_option='0' OR page_option='1') ORDER BY type ASC";
返回的列scenario
的前三个结果是a1
,d3
,e1
。
现在,当我使用其他相同的表格执行UNION ALL时:
$sql = "SELECT * FROM `my_table`
WHERE type!='' AND (page_option='0' OR page_option='1')
UNION ALL
SELECT * FROM `my_table_2`
WHERE type!='' AND (page_option='0' OR page_option='1')
UNION ALL
SELECT * FROM `my_table_3`
WHERE type!='' AND (page_option='0' OR page_option='1')
ORDER BY type ASC";
我遍历结果,my_table
的前三列是e1
,e1
,e1
。
每个表都有一个名为type
的列,用于标识结果来自的表。因此,对于联合查询结果,我添加了一个条件,仅显示来自my_table
if($type=="my_table") {
echo $scenario;
}
场景应该与单个查询相同,但它们不是。
我如何解决?
答案 0 :(得分:2)
你的假设是错误的。除非您使用ORDER BY
在您的情况下,您只能按type
订购,因此其他字段的顺序可以是随机的
你可以在这里找到一个很好的解释和例子: