Bei den meisten DBMS Ich würde diesen Ansatz in der Art und Weise, die semantisch sinnvoll ist:
SELECT ...
FROM ...
WHERE NOT EXISTS
( SELECT 1
FROM m_tp_info AS i
WHERE i.mid = me.m_id
AND CONCAT(i.e_node, i.e_n_t) = CONCAT(me.nativeName,tp.nativeName)
)
Aber MySQL wird in der Regel LEFT JOIN/IS NULL
better than NOT IN
or NOT EXISTS
optimieren, so dass Sie versuchen könnten:
SELECT ...
FROM ...
LEFT JOIN m_tp_info AS i
ON i.mid = me.m_id
AND CONCAT(i.e_node, i.e_n_t) = CONCAT(me.nativeName,tp.nativeName)
WHERE i.mid IS NULL;
Natürlich, wenn Sie Verwenden Sie einfach CONCAT
, weil Sie zwei Spalten vergleichen möchten und NOT IN
dies nicht zulässt, dann können Sie einfach die beiden Spalten verbinden:
SELECT ...
FROM ...
LEFT JOIN m_tp_info AS i
ON i.mid = me.m_id
AND i.e_node = me.nativeName
AND i.e_n_t = tp.nativeName
WHERE i.mid IS NULL;
Oder
SELECT ...
FROM ...
WHERE NOT EXISTS
( SELECT 1
FROM m_tp_info AS i
WHERE i.mid = me.m_id
AND i.e_node = me.nativeName
AND i.e_n_t = tp.nativeName
);
Ja, zu vergleichen separaten Spalten anstelle der concated Werte. (Vielleicht sollte ein NICHT vorhanden sein, um null-sicher zu sein.) – jarlh
@jarlh Das würde annehmen, dass die Komponententeile gleich sind, z. 'CONCAT ('ABC', 'DEF') = CONCAT ('AB', 'CDEF')', jedoch sind die zwei Komponententeile nicht gleich. Niranjan, kannst du bestätigen, dass das passieren könnte? – GarethD
zeigen Sie die vollständige Abfrage – RomanPerekhrest