我有sql SELECT
与 UNION (SELECT...)
```
SELECT virtuemart_product_id
FROM #__virtuemart_products
WHERE product_special = 1
UNION
(SELECT virtuemart_product_id
FROM #__virtuemart_product_badges
WHERE badge = 3)
此选择返回virtuemart\u product\u id: `12345,54321,...,789,987` -例如,最后一个id来自union(#u virtuemart_product_badges)表。
我需要对结果进行排序,以便 `UNION` table是第一个( `union_select_virtuemart_product_id` 之后呢 `first_select_virtuemart_product_id` ). 如果我试试这个:
...
UNION
(SELECT virtuemart_product_id
FROM #__virtuemart_product_badges AS badge
WHERE badge = 3)
ORDER BY badge.virtuemart_product_id
结果当然是错误的。分别是任何 `ORDER BY` 除外 `...ORDER BY virtuemart_product_id` 以错误结束。
这有可能吗?
谢谢
3条答案
按热度按时间2eafrhcq1#
如果要首先从联合表中获取结果,请首先在该联合后选择该表,然后再选择另一个表。就像this:-
1szpjjfi2#
你可以试试这个。它创建一个人工值,指示数据来自哪个表,然后在id值之前按该值排序。通过更改分配给数据集的值和排序顺序,可以更改首先输出的值:
编辑
因为要求只返回一列(
virtuemart_product_id
),则需要将此查询 Package 在子查询中,然后SELECT virtuemart_product_id
从中:ffvjumwh3#
尝试进行一些嵌套查询: