Php 为什么除函数不';不行?
我有如下mysql查询: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 >
$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