2016-11-09 46 views
0

任何人都可以幫我重寫這個查詢而不需要UNION在沒有UNION的情況下以其他形式重寫SQL查詢

我需要這個查詢沒有UNION在HQL中使用。有沒有其他的方式來加入這樣的兩個選擇?

我的觀點是我需要在一個結果中加入來自同一個表的這兩個查詢的結果。謝謝!

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 

回答

1

這相當於:

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 
+1

除非有一個記錄其中'名LIKE '%ABC%' 和id = 5';在這種情況下,重寫會在原始文件包含它時忽略該名稱。 –

+0

@MarkAdelsberger是的,我正要將這個免責聲明添加到我的答案中,但現在我寧願讓它現在,並加強您的評論 – Lamak

0
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 
+0

從[HQL](https://docs.jboss.org/hibernate/orm/ 3.3/reference/en/html/queryhql.html)我在網上找到的文檔,我沒有看到你的答案中使用的臨時表的支持。 –

相關問題