Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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
Php 使用Distinct时查询失败_Php_Mysql_Sql_Select_Distinct - Fatal编程技术网

Php 使用Distinct时查询失败

Php 使用Distinct时查询失败,php,mysql,sql,select,distinct,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' "); 像这样试试 $change="where factory='$login_session' AND Y

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

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

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

如果直接在数据库中运行查询或使用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文档以了解
不同的规范:

14.2.9选择语法

[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

如果这些非堆栈溢出资源中的任何一个仍然没有这样做。 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`
纠正此输入错误的方法是仅删除
工厂
列和
FROM
关键字之间的

根据SO上其他页面的建议,sql语句应使用以下内容:

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

DISTINCT必须首先出现,并且不需要括号。你们们可能想根据你们们想要完成的任务来审视整个团队<来自
的code>看起来也很麻烦。这个问题的可能重复显示出明显缺乏对错误检查、研究和自我解决的努力。它应该以重复的形式结束,或者以排版的形式结束。老实说,这个问题对于很多新手来说都是很有帮助的,因为它的问题和解决方法简单而直接。大多数在线常见问题解答甚至没有提到操作顺序,当涉及到DISTINCE时,或者如果他们在一个2000行的博客中做了一个小练习。在我看来,这是一个简单的问题,但这可能会让人在一到两个小时的研究中挠头。只有代码的答案对教育作用不大。如果你想窃取我的评论信息,那么至少要努力解释你的答案。(我怀疑这个答案无论如何都不会产生预期的结果集)多亏了大家的努力,我忽略了“区别”必须放在第一位