簡體   English   中英

MySQL合並同一行中不同表的列

[英]MySQL merge column from different table in same row

我正在使用嵌套的Select語句從表1獲取單行結果,我需要在同一行的末尾附加表3的另一列(COLX)。 我嘗試了UNION,但結果為2行。 有什么建議么?

SELECT COL1,COL2,COL3 
FROM `table1` 
where COL1 IN ( 
  SELECT table2.COL1 FROM `table2` 
  where table2.START_HOUR <= HOUR(NOW()) 
  AND 
  table2.END_HOUR >  HOUR(NOW()) 
  AND 
  table2.COLZ IN (
    SELECT IFNULL((SELECT COLX from `table3` WHERE COLY = 12345),'B'))) 
    Limit 1

table2.COLZ和table3.COLX是用於匹配條目的ID。 最終結果中的任何一個都可以滿足要求。

編輯(以進一步說明我的表結構)

table1
COL1|COL2|COL3

table2
COl1|START_HOUR|END_HOUR|COLZ

table3
COLX|COLY

COLX是表3的ID以匹配表2中的COLZ

表2的ID中的COL1與表1中的COL1匹配

我需要的結果是table1.COL1,table1.COL2,table1.COL3,table2.COl1,table2.COLZ,table3.COLX

其中table3.COLY = 12345

如果我沒看錯,您的table2.COLZ和table3.COLX是與表1匹配的ID;

所以你應該做一個join語句。 像這樣:

SELECT COL1,COL2,COL3 
FROM `table1` t1
JOIN (
 SELECT table2.COL1, table2.colz FROM `table2` 
  WHERE table2.START_HOUR <= HOUR(NOW()) 
  AND 
  table2.END_HOUR >  HOUR(NOW()))
) t2 on t1.col1 = t2.col1
JOIN ( SELECT IFNULL((SELECT COLX from `table3` WHERE COLY = 12345),'B')) t3 on t3.colx = t2.colz

我沒有嘗試此代碼,因此它們可能會出現一些錯誤。

暫無
暫無

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

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