MySQL nicht EXCEPT
(meines Wissens) unterstützt das zurückzukehren.
Wahrscheinlich die effiziente Route wäre die beiden WHERE
Klauseln in eins zu übernehmen. Ich sage effiziente im Sinne von "Tun Sie es so, wenn Sie diese Abfrage in einem regelmäßigen Bericht oder einer Produktionsanwendung ausführen werden."
Zum Beispiel:
-- Query 1
SELECT * FROM table WHERE `someDate`>'2016-01-01'
-- Query 2
SELECT * FROM table WHERE `someDate`>'2016-01-10'
-- Becomes
SELECT * FROM table WHERE `someDate` BETWEEN '2016-01-01' AND '2016-01-10'
Es ist möglich, Sie was implizieren, dass die Abfragen ziemlich kompliziert sind, und Sie sind nach einem schnell (sprich: nicht unbedingt effizient) Weg, um die Differenz für ein immer einmalige Untersuchung.
Wenn das der Fall, Sie UNION
und eine Unterabfrage missbrauchen könnte:
(Ungeprüfte, behandeln, als Pseudo-SQL ...)
SELECT
*
FROM (
SELECT * FROM table WHERE `someDate`>'2016-01-01'
UNION ALL
SELECT * FROM table WHERE `someDate`>'2016-01-10'
) AS sub
GROUP BY
`primaryKey`
HAVING
COUNT(1) = 1;
es aber hässlich. Und nicht effizient.
Unter der Annahme, dass die einzige Unterschied ist nur, dass einer Seite (ich es die „rechte Seite“ nennen wollen) ist fehlt Datensätze, die die linke enthält, können Sie die beiden Abfragen LEFT JOIN
(als Subs) und Filter nach rechts-ist-null. Aber das würde davon abhängen, dass all diese Vorbehalte wahr sind.
Temporäre Tabellen kann dein Freund sein - zumal sie so leicht erstellt (und können indiziert werden):
CREATE TEMPORARY TABLE tmp_xyz AS SELECT ... FROM ... WHERE ...;
* Zeigen Sie den Unterschied zwischen zwei Queres * Wo sind diese ?? –
Können Sie uns Ihre Anfrage stellen? – Imanez
Ich möchte den Unterschied zwischen 2 Autos wissen. Nun, welche? –