2017-04-13 105 views
-2

当我将DISTINCT放在我的操作员列上时,我的查询停止工作。当我删除DISTINCT我的查询工作正常。使用Distinct时查询失败

$resource= $con->query("SELECT date,factory,DISTINCT(operator)as operator,FROM 
Myfactories where factory='$login_session' AND Year='2017' "); 
+1

DISTINCT必须是第一位的,它不需要括号。您可能希望查看GROUP BY,具体取决于您尝试完成的内容。 ',FROM'看起来也很麻烦。 – mickmackusa

+0

可能的重复http://stackoverflow.com/questions/54418/how-do-i-or-can-i-select-distinct-on-multiplecolumn – mickmackusa

+1

这个问题显示明显缺乏努力来错误检查,研究和自我解决。它应该像打印错误一样重复或脱离主题。 – mickmackusa

回答

2

如果直接在你的数据库运行查询或使用mysqli_error(),你会被提供了:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT(operator) as operator, FROM Myfactories 

这将明确确认你或多或少知道什么。

那你自然会看看MySQL文档,看看有什么规格DISTINCT具有访问:https://dev.mysql.com/doc/refman/5.7/en/select.html

14.2.9 SELECT Syntax

[ALL | DISTINCT | DISTINCTROW ] 
    [HIGH_PRIORITY] 
    [STRAIGHT_JOIN] 
    [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] 
    [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] 
select_expr [, select_expr ...] 
[FROM table_references 

这意味着所有这些括号的关键字必须在任何列表达式之前。

,关于多个列说话具体地约SELECT DISTINCT附加教程资源包括:

这里是解释如何在多列使用DISTINCT很多很多的YouTube视频之一:https://www.youtube.com/watch?v=-C45IpqUbUA

而如果这些非StackOverflow的资源仍然没有做到这一点。 Stackoverflow提供了许多重复问题,在某些方面比网络上的其他任何问题都更好。

在正确调整DISTINCT关键字之后,您将会看到另一个错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `MyFactories` 

此错字的修正将是仅仅取出,factory柱和FROM关键字之间。

由于对SO推荐其他页面,你应该使用你的SQL语句如下:

SELECT `date`,`factory`,`operator` FROM `Myfactories` WHERE `factory`='$login_session' AND `Year`='2017' GROUP BY `date`,`factory`,`operator` 
-1

尝试这样

$change="where factory='$login_session' AND Year='2017'"; 
$resource= $con->query("SELECT DISTINCT operator, date, factory FROM Myfactories $change") 
+1

仅有代码的答案对教育没有多大帮助。如果你打算挖掘我的评论信息,那么至少应该在工作中解释你的答案。 (我的怀疑是这个答案不会产生所需的结果集) – mickmackusa

+1

谢谢你们的工作,我忽略了Distinct必须先来 – user3548161