我有以下查询:
SELECT o.id,o.name FROM object o
WHERE
(
o.description LIKE '%Black%' OR
o.name LIKE '%Black%'
)
UNION ALL
SELECT o2.id,o2.name FROM object o2
WHERE
(
o2.description LIKE '%iPhone%' OR
o2.name LIKE '%iPhone%'
)
Run Code Online (Sandbox Code Playgroud)
其中包括以下内容:
id name
2 New Black iPhone
1 New White iPhone
2 New Black iPhone
Run Code Online (Sandbox Code Playgroud)
我想UNION DISTINCT,但我也希望结果按每个相同行(primary:id)的出现次数排序.
您可以在id和name列上对结果进行分组,并查看每个不同值的出现次数.然后你可以通过首先出现的大多数出现来订购它们order by count(*) desc
select id, name, count(*) as occurences
from (
SELECT o.id,o.name FROM object o
WHERE
(
o.description LIKE '%Black%' OR
o.name LIKE '%Black%'
)
UNION ALL
SELECT o2.id,o2.name FROM object o2
WHERE
(
o2.description LIKE '%iPhone%' OR
o2.name LIKE '%iPhone%'
)
)
group by id, name
order by count(*) desc
Run Code Online (Sandbox Code Playgroud)
这将回来
id name occurences
2 New Black iPhone 2
1 New White iPhone 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1818 次 |
| 最近记录: |