Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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 为什么除函数不';不行?_Php_Mysql_Except - Fatal编程技术网

Php 为什么除函数不';不行?

Php 为什么除函数不';不行?,php,mysql,except,Php,Mysql,Except,我有如下mysql查询: $missingTypo = mysql_query("SELECT m.ID FROM table1 AS m LEFT JOIN table2 AS ut ON ut.matchID = m.ID WHERE data >

我有如下mysql查询:

$missingTypo = mysql_query("SELECT m.ID
                              FROM table1 AS m
                              LEFT JOIN table2 AS ut
                              ON ut.matchID = m.ID
                              WHERE data > '$now'
                          EXCEPT
                            SELECT m.ID
                              FROM table1 AS m
                              LEFT JOIN table2 AS ut
                              ON ut.matchID = m.ID
                              WHERE data > '$now' 
                              AND ut.typer = '$name'");
第一个状态查询返回3个结果[10,11,12],第二个返回1个结果[10]。整个查询的结果应该是[11,12],但它不起作用。var_dump函数返回false。 但是,如果我将“EXCEPT”交换为例如“UNION ALL”,它就可以正常工作并给出[10,11,12,10]


请提供帮助。

MySQL不支持Exception,请使用WHERE NOT,正如另一个答案所建议的那样,
Exception
在MySQL中不受支持,但您可以使用
NOT in
谓词:

SELECT m.ID
FROM table1 AS m
LEFT JOIN table2 AS ut ON ut.matchID = m.ID
WHERE data > '$now'
  AND m.ID NOT IN(SELECT m2.ID
                  FROM table1 AS m2
                  INNER JOIN table2 AS ut ON ut.matchID = m.ID
                  WHERE data > '$now' 
                    AND ut.typer = '$name');
左连接

SELECT t1.ID
FROM
(
  SELECT m.ID
  FROM table1 AS m
  LEFT JOIN table2 AS ut ON ut.matchID = m.ID
  WHERE data > '$now'
) AS t1
LEFT JOIN
(
  SELECT m.ID
  FROM table1 AS m
  LEFT JOIN table2 AS ut ON ut.matchID = m.ID
  WHERE data > '$now' 
    AND ut.typer = '$name'
) AS t2 ON t1.ID = t2.ID
WHERE t2.ID IS NULL

不要使用不推荐使用且不安全的
mysql.*
-函数。自PHP5.5(2013年)起,它们就被弃用,并在PHP7(2015年)中被完全删除。改用MySQLi或PDO。我非常感谢你们所有人!第一个示例非常有效,语法简单。谢谢大家!@ŁukaszMikowski-不客气,如果你觉得答案有用,请接受。我还有一个问题。如果我选择多个列怎么办?@ukaszMikowski,要选择额外的列,您可以在“选择”菜单中列出额外的列。@ukaszMikowski-您可以
选择m.
而不是
选择m.ID