使用Distinct时查询失败

时间:2017-04-13 03:57:30

标签: php mysql sql select distinct

当我将DISTINCT放在我的操作列上时,我的查询停止工作。当我删除DISTINCT时,我的查询工作正常。

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

2 个答案:

答案 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视频中的一个,它解释了如何在多列上使用DISTINCThttps://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 :(得分:-1)

试试这个

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