Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 错误查询_Java_Mysql_Phpmyadmin - Fatal编程技术网

Java 错误查询

Java 错误查询,java,mysql,phpmyadmin,Java,Mysql,Phpmyadmin,我有以下两个查询,它们都是相同的,但只是在结构上不同 第一个问题: SELECT DISTINCT u.username, r.value, u.amount AS `amount` FROM Daily_Balance_Updates u INNER JOIN Role r ON u.role_id = r.id WHERE u.updated_at = (SELECT MAX(inner_u.updated_at)

我有以下两个查询,它们都是相同的,但只是在结构上不同

第一个问题:

SELECT DISTINCT 
    u.username, r.value, u.amount AS `amount`
FROM 
    Daily_Balance_Updates u
INNER JOIN 
    Role r ON u.role_id = r.id
WHERE 
    u.updated_at = (SELECT MAX(inner_u.updated_at)
                    FROM Daily_Balance_Updates AS inner_u
                    WHERE inner_u.username = u.username
                       && amount > 0
                       && UNIX_TIMESTAMP( inner_u.updated_at ) < UNIX_TIMESTAMP( '2013-1-3 23:59:59' )
)
ORDER BY 
    r.value, UNIX_TIMESTAMP( u.updated_at ) DESC
在Phpmyadmin中工作良好

第二个问题

在Java中使用相同的查询时,我声明如下:

query="SELECT DISTINCT u.username, r.value, u.amount AS `amount' FROM Daily_Balance_Updates     u INNER JOIN Role r ON u.role_id = r.id WHERE u.updated_at = ("
+ "SELECT MAX(inner_u.updated_at) FROM Daily_Balance_Updates AS inner_u WHERE inner_u.username = u.username && amount > 0 && UNIX_TIMESTAMP( inner_u.updated_at ) < UNIX_TIMESTAMP('" +date+" 23:59:59' )) ORDER BY r.value DESC,UNIX_TIMESTAMP( u.updated_at )"
但当我执行它时,它在phpmyadmin和java中都会出现错误

错误

字段列表中的未知表“u”

我的日志:

问题:


查询有什么问题?看起来没问题。

这两个查询有两个不同之处

`amount`vs`amount',两个引号必须为反勾号。 我猜,这就是原因,为什么从每日余额更新中你没有被识别,你会得到误导性的错误信息。 订购人。。。描述。。。vs订单由。。。描述 还有一点,如果您除了用户名之外还有一个用户id,那么比较where子句中的用户id会更快。

sql: `数量` 爪哇: `金额'


存在差异,

错误的单引号-`amount'告诉我此查询的输出是什么选择DISTINCT u.username FROM Daily\u Balance\u Updates u其中u.updated\u at=选择MAXinner\u u.updated\u at FROM Daily\u Balance\u Updates作为inner\u其中inner\u.username=u.username您没有正确定义u作为别名。如果u实际上是表的名称,则应将其更改为更有意义的表名。除此之外,确保你有正确的别名。@Sahal我猜对了问题出在数量上……谢谢
12:23:17,963 INFO  [STDOUT] 2013-01-07 12:23:17,962 ERROR 
    com.walletplus.report.dao.ReportDaoMysql -  Thread #98  - 
    StatementCallback; bad SQL grammar 
        [SELECT DISTINCT u.username, r.value, u.amount AS `amount' FROM 
            Daily_Balance_Updates u INNER JOIN Role r ON u.role_id = r.id   
            WHERE u.updated_at = (SELECT MAX(inner_u.updated_at) FROM
            Daily_Balance_Updates AS inner_u WHERE inner_u.username = u.username    
            && amount > 0 && UNIX_TIMESTAMP( inner_u.updated_at ) < 
            UNIX_TIMESTAMP('2013-01-01 23:59:59' )) ORDER BY r.value DESC]; 
            nested exception is java.sql.SQLException: Unknown table 'u' in field list