【发布时间】:2019-07-12 00:38:05
【问题描述】:
我正在使用 C# 控制台应用程序从 MySql 数据库中获取一些数据,但在正确查询时遇到了一些问题
现在这样:
SELECT * FROM Customer
WHERE EXISTS ( SELECT * FROM Customer_x_Billing c WHERE Customer.`customer id` = c.customer_id)
AND 2011 -04 -03 < ( SELECT last_changed FROM Customer_x_Billing c WHERE Customer.`customer id` = c.customer_id )
ORDER BY Customer.`customer id`
如何改进这一点? 我想获取在 Customer 和 Customer_x_Billing 表中都有 ID 并且 Customer_x_Billing 中的 last_changed 日期大于参数(在本例中为 2011-04-03)的所有客户。如果我将日期设置为 2012-04-03,它不应该返回任何行,但它会返回与第一个条件匹配的所有记录(两者都存在)。
【问题讨论】:
-
没有对您的查询进行太多分析,您的查询最明显的问题是您指定日期参数的方式。你在那里得到的被解释为一个算术表达式
2011 - 04 - 03,它会被相应地评估,然后在与子查询的结果进行比较时隐式转换为日期/时间值。为了将参数解释为日期,您需要将其括在单引号中,就像大多数答案所建议的那样。