我有一个由客户、产品和事务表组成的数据库。我正试图编写一个sql语句,列出2000年没有交易的所有客户的姓名和ssn。事务表中的transaction date列是日期/时间数据类型(例如2000-12-18 00:00:00)。这是我编写的SQL代码:SELECT DISTINCT CustomerName, Customer.CustomerSSNFROM Customer, TransactionWHERE Customer.CustomerSSN=Transaction.CustomerSSNAND YEAR(TransactionDate)<>2000;不等于符号()似乎由于某种原因无法工作。当我把它改为等号时,它会返回正确的结果…任何建议都很感激。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 我会改变方法。以下查询不需要distinct或GROUP BY,因为没有一个客户记录连接到多个交易记录。它也适用于从未进行过任何交易的客户。最后,它使用>= AND <而不是YEAR()=2000。这将启用索引查找而不是完全扫描(假设事务表上有适当的索引)。SELECT CustomerName, CustomerSSNFROM CustomerWHERE NOT EXISTS ( SELECT * FROM Transaction WHERE CustomerSSN = Customer.CustomerSSN AND TransactionDate >= '20000101' AND TransactionDate < '20010101' )关于mysql - SQL日期时间不等于不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10228161/ (adsbygoogle = window.adsbygoogle || []).push({}); 10-09 10:07