不使用 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
谁能帮我在没有 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