当我将DISTINCT
放在我的操作列上时,我的查询停止工作。当我删除DISTINCT
时,我的查询工作正常。
$resource= $con->query("SELECT date,factory,DISTINCT(operator)as operator,FROM
Myfactories where factory='$login_session' AND Year='2017' ");
答案 0 :(得分: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
这将明确证实你或多或少知道什么。
然后您可以通过访问:https://dev.mysql.com/doc/refman/5.7/en/select.html
自然地查看MYSQL文档,了解DISTINCT
的规范。
14.2.9 SELECT语法
[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
说明的其他教程资源包括:
以下是许多YouTube视频中的一个,它解释了如何在多列上使用DISTINCT
:https://www.youtube.com/watch?v=-C45IpqUbUA
如果这些非StackOverflow资源中的任何一个仍然没有这样做。 Stackoverflow提供了许多重复的问题,这些问题在某些方面比网络上的任何其他问题都要好。
GROUP BY
的优化)GROUP BY
的优化)在正确调整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 :(得分:-1)
试试这个
$change="where factory='$login_session' AND Year='2017'";
$resource= $con->query("SELECT DISTINCT operator, date, factory FROM Myfactories $change")