Mysql except: sql — Alternative to except in MySQL

Содержание

LinkedIn

選擇語言Bahasa Indonesia (Bahasa Indonesia)Bahasa Malaysia (Malay)Čeština (Czech)Dansk (Danish)Deutsch (German)English (English)Español (Spanish)繁體中文 (Chinese (Traditional))Français (French)한국어 (Korean)Italiano (Italian)简体中文 (Chinese (Simplified))Nederlands (Dutch)日本語 (Japanese)Norsk (Norwegian)Polski (Polish)Português (Portuguese)Română (Romanian)Русский (Russian)Svenska (Swedish)Tagalog (Tagalog)ภาษาไทย (Thai)Türkçe (Turkish)العربية (Arabic)

عفواً، لم نتمكن من العثور على الصفحة التي تبحث عنها. برجاء المحاولة مرة أخرى للصفحة السابقة أو الانتقال لـمركز المساعدة للمزيد من المعلومات

الإنتقال لموجزك الرئيسي

Omlouváme se, nemůžeme najít stránku, kterou hledáte. Zkuste se vrátit zpátky na předchozí stránku, nebo se podívejte do našeho Centra nápovědy pro více informací

Přejít do informačního kanálu

Vi kan desværre ikke finde den side, du leder efter. Gå tilbage til den forrige side, eller besøg Hjælp for at få flere oplysninger

Gå til dit feed

Die gewünschte Seite konnte leider nicht gefunden werden.

Versuchen Sie, zur vorherigen Seite zurückzukehren, oder besuchen Sie unseren Hilfebereich, um mehr zu erfahren.

Zu Ihrem Feed

Uh oh, we can’t seem to find the page you’re looking for. Try going back to the previous page or see our Help Center for more information

Go to your feed

Vaya, parece que no podemos encontrar la página que buscas. Intenta volver a la página anterior o visita nuestro Centro de ayuda para más información.

Ir a tu feed

Nous ne trouvons pas la page que vous recherchez. Essayez de retourner à la page précédente ou consultez notre assistance clientèle pour plus d’informations

Ouvrez votre fil

Maaf, sepertinya kami tidak dapat menemukan halaman yang Anda cari. Coba kembali ke halaman sebelumnya atau lihat Pusat Bantuan kami untuk informasi lebih lanjut

Buka feed Anda

Non abbiamo trovato la pagina che stai cercando.

Prova a tornare alla pagina precedente o visita il nostro Centro assistenza per saperne di più.

Vai al tuo feed

申し訳ありません。お探しのページが見つかりません。前のページに戻るか、ヘルプセンターで詳細をご確認ください

フィードに移動

원하시는 페이지를 찾을 수 없습니다. 이전 페이지로 돌아가거나 고객센터에서 자세히 알아보세요.

홈으로 가기

Harap maaf, kami tidak dapat menemui laman yang ingin anda cari. Cuba kembali ke laman sebelumnya atau lihat Pusat Bantuan kami untuk maklumat lanjut

Pergi ke suapan

De pagina waar u naar op zoek bent, kan niet worden gevonden. Probeer terug te gaan naar de vorige pagina of bezoek het Help Center voor meer informatie

Ga naar uw feed

Vi finner ikke siden du leter etter. Gå tilbake til forrige side eller besøk vår brukerstøtte for mer informasjon

Gå til din feed

Nie możemy znaleźć strony, której szukasz.

Spróbuj wrócić do poprzedniej strony lub nasze Centrum pomocy, aby uzyskać więcej informacji

Przejdź do swojego kanału

A página que você está procurando não foi encontrada. Volte para a página anterior ou visite nossa Central de Ajuda para mais informações

Voltar para seu feed

Ne pare rău, nu găsim pagina pe care o căutaţi. Reveniţi la pagina anterioară sau consultaţi Centrul nostru de asistenţă pentru mai multe informaţii

Accesaţi fluxul dvs.

Не удаётся найти искомую вами страницу. Вернитесь на предыдущую страницу или посетите страницу нашего справочного центра для получения дополнительной информации.

Перейти к ленте

Sidan du letar efter hittades inte. Gå tillbaka till föregående sida eller besök vårt Hjälpcenter för mer information

Gå till ditt nyhetsflöde

ขออภัย ดูเหมือนเราไม่พบหน้าที่คุณกำลังมองหาอยู่ ลองกลับไปที่หน้าเพจก่อน หรือดู ศูนย์ความช่วยเหลือ ของเราสำหรับข้อมูลเพิ่มเติม

ไปที่ฟีดของคุณ

Naku, mukhang hindi namin mahanap ang pahina na hinahanap mo.

Subukang bumalik sa nakaraang pahina o tingnan ang aming Help Center para sa higit pang impormasyon

Pumunta sa iyong feed

Aradığınız sayfa bulunamadı. Önceki sayfaya geri dönün veya daha fazla bilgi için Yardım Merkezimizi görüntüleyin

Haber akışınıza gidin

抱歉,无法找到页面。试试返回到前一页,或前往帮助中心了解更多信息

前往动态汇总

我們好像找不到該頁面。請回到上一頁或前往說明中心來進一步瞭解

前往首頁動態

Кроме замены в mysql? — Переполнение стека

Задавать вопрос

спросил

Изменено
5 лет, 6 месяцев назад

Просмотрено
2к раз

Мне нужно написать код в mysql, но в основном я пишу в MS SQL и вот проблема, в MS SQL я могу использовать ЗА ИСКЛЮЧЕНИЕМ и у меня все нормально. Но в MySQL все не так просто, я пробовал с NOT IN и NOT EXISTS, но это не дало мне такого же результата. Мой код MS SQL:

 ВЫБЕРИТЕ P.IDRoom, R.IDRoom, R.DateB, R.DataE
FROM Room P LEFT JOIN Reservation R ON P.IDRoom = R.IDRoom
ПРИСОЕДИНЯЙТЕСЬ к отелю H ON P.IDHotelу = H.IDHotelу
ГДЕ P.NumberOfBeds = 2 И H.IDHotelu = 2
КРОМЕ
ВЫБЕРИТЕ P.IDRoom, R.IDRoom, R.DateB, R.DataE
FROM Room P ПРИСОЕДИНЯЙТЕСЬ к бронированию R ON P.IDRoom = R.IDRoom
ГДЕ '2017-12-10' МЕЖДУ DataB И DataE;
 

Как вы видите, я ищу отель с 2 кроватями и идентификатором отеля 2. но я не хочу видеть номера, которые уже забронированы, поэтому я использую кроме и ищу забронированные номера… но это легко в MS SQL, в MySQL у меня ничего не работает -_-. Есть идеи?

3

Обычно я создаю подзапрос и присоединяю к нему внешнюю таблицу с помощью LEFT JOIN. Затем это позволяет вам поместить столбец WHERE IS NULL.

 ВЫБЕРИТЕ
    P.IDRoom
   ,R.IDКомната
   ,R.DateB
   ,R. DataE
ОТ
    Комната П
    LEFT JOIN Reservation R ON P.IDRoom = R.IDRoom
    INNER JOIN Hotel H ON P.IDОтель = H.IDОтель
ЛЕВОЕ СОЕДИНЕНИЕ (
    ВЫБИРАТЬ
        P.IDRoom КАК IDRoom1
        ,R.IDRoom КАК IDRoom2
        ,R.DateB
        ,R.DataE
    ОТ
        Комната П
        ПРИСОЕДИНЯЙТЕСЬ к бронированию R ON P.IDRoom = R.IDRoom
    ГДЕ
        '2017-12-10' МЕЖДУ DataB И DataE
) AS e ON P.IDRoom = e.IDRoom1 И R.IDRoom = e.IDRoom2 И R.DateB = e.DateB И R.DataE = R.DataE
ГДЕ
    P.NumberOfBeds = 2 AND H.IDHotelu = 2
    И e.IDRoom1 имеет значение NULL
 

2

Приведенный ниже запрос должен вести себя как , ЗА ИСКЛЮЧЕНИЕМ

 SELECT P.IDRoom, R.IDRoom, R.DateB, R.DataE
ИЗ Комнаты Р
LEFT JOIN Reservation R ON P.IDRoom = R.IDRoom
ПРИСОЕДИНЯЙТЕСЬ к отелю H ON P.IDHotelу = H.IDHotelу
ГДЕ P.NumberOfBeds = 2 И H.IDHotelu = 2
    И НЕ СУЩЕСТВУЕТ(
        ВЫБЕРИТЕ 1
        ИЗ Комнаты i_P
        ПРИСОЕДИНЯЙТЕСЬ к бронированию i_R ON i_P. IDRoom = i_R.IDRoom
        ГДЕ '2017-12-10' МЕЖДУ DataB И DataE
            И i_P.IDRoom = P.IDRoom
    )
 

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

union — MySQL: почему возникает ошибка, когда я использую EXCEPT для исключения некоторых строк из исходного выбора?

Задавать вопрос

спросил

Изменено
2 года, 10 месяцев назад

Просмотрено
57 раз

Кредит: Литкод 1264

Таблица: Дружба

 +---------------+---------+
| Имя столбца | Тип |
+---------------+---------+
| user1_id | инт |
| user2_id | инт |
+---------------+---------+
(user1_id, user2_id) является первичным ключом для этой таблицы.
Каждая строка этой таблицы указывает на наличие дружественных отношений между user1_id и user2_id.
 
 

Таблица: лайки

 +-------------+---------+
| Имя столбца | Тип |
+-------------+---------+
| идентификатор_пользователя | инт |
| page_id | инт |
+-------------+---------+
(user_id, page_id) является первичным ключом для этой таблицы. 
Каждая строка этой таблицы указывает, что user_id нравится page_id.
 
 

Напишите запрос SQL, чтобы рекомендовать страницы пользователю с user_id = 1, используя страницы, которые понравились вашим друзьям. Он не должен рекомендовать страницы, которые вам уже понравились.

Возврат таблицы результатов в любом порядке без дубликатов.

Формат результата запроса приведен в следующем примере:

 Таблица дружбы:
+----------+----------+
| user1_id | user2_id |
+----------+----------+
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 2 | 3 |
| 2 | 4 |
| 2 | 5 |
| 6 | 1 |
+----------+----------+
 
Таблица лайков:
+---------+---------+
| идентификатор_пользователя | page_id |
+---------+---------+
| 1 | 88 |
| 2 | 23 |
| 3 | 24 |
| 4 | 56 |
| 5 | 11 |
| 6 | 33 |
| 2 | 77 |
| 3 | 77 |
| 6 | 88 |
+---------+---------+
Таблица результатов:
+------------------+
| рекомендуемая_страница |
+------------------+
| 23 |
| 24 |
| 56 |
| 33 |
| 77 |
+------------------+
Пользователь 1 дружит с пользователями 2, 3, 4 и 6. 
Предлагаемые страницы: 23 от пользователя 2, 24 от пользователя 3, 56 от пользователя 3 и 33 от пользователя 6.
Страница 77 предлагается как пользователем 2, так и пользователем 3.
Страница 88 не предлагается, потому что она уже нравится пользователю 1.
 

Мой код:

 выбрать отдельный (l1.page_id) как рекомендацию_страницы
из лайков л1
слева присоединиться к дружбе f
на l.user_id = f.user2_id
где user1_id = 1
СОЮЗ
выберите отдельный (l2.page_id) в качестве рекомендуемой_страницы
из лайков л2
слева присоединиться к дружбе f
на l.user_id = f.user1_id
где user2_id = 1
КРОМЕ
выберите page_id как рекомендуемую_страницу
от лайков
где user_id = 1
 

Пока есть ошибка рядом с исключением. Может ли кто-нибудь помочь мне понять, почему? Большое спасибо!

  • MySQL
  • union
  • кроме

Leetcode использует MySQL, который не поддерживает ключевое слово EXCEPT.

Попробуйте этот SQL:

 выберите рекомендуемую_страницу из
(
выберите отдельную (l1. page_id) как рекомендуемую_страницу
из лайков л1
слева присоединиться к дружбе f
на l.user_id = f.user2_id
где user1_id = 1
СОЮЗ
выберите отдельный (l2.page_id) в качестве рекомендуемой_страницы
из лайков л2
слева присоединиться к дружбе f
на l.user_id = f.user1_id
где user2_id = 1
) Икс
ГДЕ рекомендуемая_страница НЕ В
(
выберите page_id как рекомендуемую_страницу
от лайков
где user_id = 1
)
 

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.