Ik moet een query als volgt in MySQL:
SELECT *
FROM Tab1
EXCEPT
SELECT *
FROM Tab1
WHERE int_attribute_of_Tab1>0
Maar MySQL ondersteunt het zoekwoord behalve .
Is er een Standaardmodus om een andere operator correct te gebruiken die het behalve in MySQL simuleren?
Antwoord 1, Autoriteit 100%
U kunt niet gebruiken in
SELECT *
FROM Tab1
WHERE id NOT IN (
SELECT id
FROM Tab1
WHERE int_attribute_of_Tab1>0
)
Antwoord 2, Autoriteit 16%
Probeer dit
SELECT *
FROM Tab1
WHERE [....] NOT EXISTS
(SELECT *
FROM Tab1
WHERE int_attribute_of_Tab1>0)
Antwoord 3, Autoriteit 3%
een paar definities
SQLSERVER https://docs.microsoft.com/en-US/SQL/T-SQL/Language-elections/Set-operators- Except-and-Intersect-Transact-SQL behalve
Retourneert verschillende waarden van de query links van de behalve operator die niet ook van de juiste query wordt geretourneerd.
Plsql https://docs.oracle.com/cd/b19306_01 /server.102/b14200/Queries004.htm minus
Verklaring combineert resultaten met de minus-operator, die alleen unieke rijen retourneert die wordt geretourneerd door de eerste query, maar niet door de tweede
Een pedelische vertaling naar MySQL zou
zijn
SELECT distinct t1.*
FROM Tab1 as t1
left outer join
(SELECT *
FROM Tab1
WHERE int_attribute_of_Tab1>0) as t2 on t1.id = t2.id
where t2.id is null;
Ervan uitgaande dat er een id-kolom is, en ik zou geen onderscheid willen maken voor veel kolommen.