以下查询在本地phpmyadmin上运行完美,但在服务器phpmyadmin上无法运行
select t.fk_user_id,
t.target_month,
t.target,
e.ce_recruiter_id,
e.billing_amount
from target t
left join closure_employee e
on t.fk_user_id = e.ce_recruiter_id
and month(t.target_month) = month(e.offer_date)
and e.offer_date > DATE_SUB(now(), INTERVAL 7 MONTH)
where t.target_month > DATE_SUB(now(), INTERVAL 7 MONTH) and t.fk_user_id ='31'
本地结果:
fk_user_id target_month target ce_recruiter_id billing_amount
31 2013-07-01 100000 NULL NULL
31 2013-08-01 100000 31 390000
31 2013-09-01 100000 31 208354
31 2013-10-01 120000 NULL NULL
31 2013-11-01 120000 NULL NULL
31 2013-12-01 120000 NULL NULL
服务器结果:
fk_user_id target_month target ce_recruiter_id billing_amount
31 2013-07-01 100000 NULL NULL
31 2013-08-01 100000 NULL NULL
31 2013-09-01 100000 NULL NULL
31 2013-10-01 120000 NULL NULL
31 2013-11-01 120000 NULL NULL
31 2013-12-01 120000 NULL NULL
我如何在服务器上获得本地结果。 请帮忙。
答案 0 :(得分:0)
首先确认数据是否相同。如果是,则在本地修改后确认data is committed or not
。
答案 1 :(得分:0)
我们无法为您提供问题的确切解决方案,因为我们不了解您的数据和/或服务器配置的许多内容......但最简单的解决方案应该是检查您使用的每个条件你的“where”陈述单独找出哪个失败了。
select e.* from target t
left join closure_employee e on t.fk_user_id = e.ce_recruiter_id
where t.fk_user_id ='31'
select e.* from target t
left join closure_employee e on t.fk_user_id = e.ce_recruiter_id and month(t.target_month) = month(e.offer_date)
where t.fk_user_id ='31'
select e.* from target t
left join closure_employee e on t.fk_user_id = e.ce_recruiter_id and month(t.target_month) = month(e.offer_date) and e.offer_date > DATE_SUB(now(), INTERVAL 7 MONTH)
where t.fk_user_id ='31'
依旧...... 也许这会告诉你问题在哪里
答案 2 :(得分:0)
如果您确定两台服务器上的数据相同,那么查询中唯一不同的组件是Now()函数,所以我猜这里和那里的时间不同。你能在服务器上做select now()
吗? (或类似的东西。)
另外,我发现在连接中使用大于运算符(>)的情况很奇怪。你真的需要吗? AFAIC,它使查询非常不稳定和不可预测。我有一种感觉,你打算把它放在where子句中。
答案 3 :(得分:0)
首先谢谢大家特别是@tuffkid。
问题是offer_date
数据类型为varchar
所以我已将其更改为datetime
并且问题已解决。我知道这是一个愚蠢的错误,但我只关注表中的数据而不是数据类型。