简体   繁体   English

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

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

I am using nested Select statements to get a single row result from table 1, I need to append another column (COLX) from table 3 at the end of same row. 我正在使用嵌套的Select语句从表1获取单行结果,我需要在同一行的末尾附加表3的另一列(COLX)。 I have tried UNION, but that results in 2 rows. 我尝试了UNION,但结果为2行。 any suggestions? 有什么建议么?

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 and table3.COLX are IDs used to match entries. table2.COLZ和table3.COLX是用于匹配条目的ID。 Either of these in final result would fulfill the requirement. 最终结果中的任何一个都可以满足要求。

edit (to further explain my table structure) 编辑(以进一步说明我的表结构)

table1
COL1|COL2|COL3

table2
COl1|START_HOUR|END_HOUR|COLZ

table3
COLX|COLY

COLX is ID of table 3 to match COLZ in table 2 COLX是表3的ID以匹配表2中的COLZ

COL1 in ID of table 2 to match COL1 in table 1 表2的ID中的COL1与表1中的COL1匹配

result i need is table1.COL1,table1.COL2,table1.COL3, table2.COl1,table2.COLZ,table3.COLX 我需要的结果是table1.COL1,table1.COL2,table1.COL3,table2.COl1,table2.COLZ,table3.COLX

where WHERE table3.COLY = 12345 其中table3.COLY = 12345

If i read you well, your table2.COLZ and table3.COLX are IDs to match with table 1; 如果我没看错,您的table2.COLZ和table3.COLX是与表1匹配的ID;

So you should make a join statement. 所以你应该做一个join语句。 Something like that : 像这样:

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

I haven't try this code so their might be some errors. 我没有尝试此代码,因此它们可能会出现一些错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM