不使用 UNION 以其他形式重写 SQL 查询

Rewrite SQL query in other form without UNION

谁能帮我在没有 UNION 的情况下重写这个查询?

我需要这个不带 UNION 的查询以在 HQL 中使用。还有其他方法可以像这样加入两个选择吗?

我的观点是,我需要将来自同一 table 的这两个查询的结果合并到一个结果中。谢谢!

SELECT tab.name AS name FROM Table tab 
WHERE tab.name LIKE '%abc%' 
UNION 
SELECT TO_CHAR(tab.id) AS name FROM Table tab 
WHERE  tab.id = 5

这相当于:

SELECT  CASE 
            WHEN tab.id = 5 THEN TO_CHAR(tab.id)
            ELSE tab.name 
        END AS name 
FROM Table tab 
WHERE tab.name LIKE '%abc%' 
OR tab.id = 5
CREATE TABLE #TABLE(NAME VARCHAR(100))

INSERT INTO #TABLE(NAME)
SELECT tab.NAME AS NAME
FROM   table tab
WHERE  tab.NAME LIKE '%abc%'

INSERT INTO #TABLE(NAME)
SELECT TO_CHAR(tab.id) AS NAME
FROM   table tab
WHERE  tab.id = 5

SELECT NAME
FROM   #TABLE