簡體   English   中英

MySQL:在一個語句中組合2列的結果

[英]MySQL: Combining the results of 2 columns in one statement

讓我們說我有2個結果集如下

 R1        R2
| 1 |     | 5 |
| 2 |     | 6 |
| 3 |     | 7 |
| 4 |     | 8 |

我需要將這些結果合並到一個SET中,所以我有這樣的事情:

 R3
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |

目前,我正在使用UNION這樣做:

SELECT c_1 AS result FROM table WHERE c_1=3 OR c_2=3
UNION
SELECT c_2 AS result FROM table WHERE c_1=3 OR c_2=3

基本上,我最終在表上執行兩次相同的操作,每次只檢索不同的行。 有沒有更有效的方法可以做到這一點? 我需要將結果放在一個列中,因為這是IN的限制。 從長遠來看,我需要做的就是這個

SELECT name FROM person WHERE person_id IN
(SELECT c_1 AS result FROM table WHERE c_1=3 OR c_2=3
UNION
SELECT c_2 AS result FROM table WHERE c_1=3 OR c_2=3)

有沒有更好的方法去尋找所有這些? 歡迎任何和所有幫助。

取而代之的是的IN ()子查詢,您可以執行INNER JOIN c_1 OR c_2

SELECT
  name
FROM 
  person
  /* Join against the other table on *either* column c_1 or c_2 */
  INNER JOIN `table` ON `table`.c_1 = person.person_id OR `table`.c_2 = person.person_id
WHERE
  /* And the WHERE condition only needs to be applied once */
  c_1 = 3 OR c_2 = 3

http://sqlfiddle.com/#!2/4d159/1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM