我使用嵌套的Select语句从表1中获得单行结果,我需要在同一行的末尾追加表3中的另一列(COLX)。我试过联合,但结果是两行。有什么建议吗?
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匹配
结果我需要的是表1.col1,表1.col2,表1.col3,表2.col1,表2.colz,表3.colx
where where表3.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
我没有尝试过这个代码,所以他们可能是一些错误。