Внутреннее соединение MySQL с оператором Не равно - PullRequest
4 голосов
/ 27 августа 2011

У меня есть много строк в Sale и одна строка в SalesProcessed.

SELECT * FROM Sale 
    INNER JOIN SalesProcessed
    ON Sale.id<>SalesProcessed.id
    LIMIT 0,30

Этот код возвращает ту же строку, идентификатор которой находится в SalesProcessed. Почему?

На самом деле мне нужны строки продажи, идентификаторы которых не существуют в SalesProcessed.

Ответы [ 3 ]

10 голосов
/ 27 августа 2011
SELECT *
    FROM Sale
        LEFT JOIN SalesProcessed
            ON Sale.id = SalesProcessed.id
    WHERE SalesProcessed.id IS NULL
    LIMIT 0,30
4 голосов
/ 27 августа 2011

Если вы хотите несуществующие строки, это неправильный запрос:

SELECT *
FROM Sale
LEFT JOIN SalesProcessed
ON Sale.ID = SalesProcessed.id
WHERE SalesProcessed.id IS NULL;
4 голосов
/ 27 августа 2011

Другой подход

SELECT * FROM Sale 
where Sale.id not in (select SalesProcessed.id from SalesProcessed)
LIMIT 0,30



SELECT * FROM Sale 
where NOT EXISTS (
 select SalesProcessed.id from SalesProcessed where Sale.id=SalesProcessed.id)
LIMIT 0,30

Вы должны проверить каждый запрос с объяснением для получения наилучшего результата

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...