2016-03-08 36 views
1

我试图从schemaOne中选择所有记录。 abc其中abcTIMESTAMPschemaTwo之前为3周或更少。 xyzTIMESTAMP两种模式的日期时间差

所以,如果:

schemaOneabcTIMESTAMP = 2016-03-08

和:

schemaTwoxyzTIMESTAMP = 2016-03-01

Then schemaOneabcTIMESTAMP应提取,但如果:

schemaTwoxyzTIMESTAMP = 2012-03-01

Then schemaOneabcTIMESTAMP不应该被提取。

我在它的企图:

SELECT ID FROM schemaOne.abc WHERE `TIMESTAMP` > (SELECT `TIMESTAMP` FROM schemaTwo.xyz) - INTERVAL 3 WEEK; 

返回错误:

Error Code: 1242 Subquery returns more than 1 row 

我怀疑我可能需要做一个UNION或代表查询ASAB在它们之间传递参数,但我不是MySQL专家,所以我很困难。也许有一个更简单的方法来做到这一点?

+0

你如何把这两张表联系起来? – 1000111

+0

'abc'有'ID'和'xyz'有'abc_ID' – Hooli

+0

您只希望根据匹配的ID得到结果,对不对? – 1000111

回答

1

由于schemaOne.abc.IDschemaTwo.xyz.abc_ID引用,因此以下查询可能是您所期望的。

SELECT 
schemaOne.abc.ID 
FROM schemaOne.abc 
INNER JOIN schemaTwo.xyz ON schemaOne.abc.ID = schemaTwo.xyz.abc_ID 
WHERE schemaOne.abc.`TIMESTAMP` > (schemaTwo.xyz.`TIMESTAMP` - INTERVAL 3 WEEK);