Mysql
 sql >> база данни >  >> RDS >> Mysql

Принуди MySQL да връща дубликати от клауза WHERE IN, без да използва JOIN/UNION?

Не съм сигурен защо искате да забраните JOIN, тъй като е доста важен за SQL. Това е като забрана на извиквания на функции на функционален език.

Добър начин да разрешите това е да създадете набор от резултати, съдържащ идентификаторите, които искате да върнете, и да се присъедините към него. Ето един начин да го направите:

SELECT Table1.*
FROM Table1
JOIN (SELECT 1 AS id
      UNION ALL SELECT 2
      UNION ALL SELECT 3
      UNION ALL SELECT 4
      UNION ALL SELECT 5
      UNION ALL SELECT 1
      UNION ALL SELECT 2
      UNION ALL SELECT 5
      UNION ALL SELECT 5) AS T1
ON Table1.id = T1.id

Не съм сигурен дали сте обмисляли този метод? Няма нито един от проблемите, от които изглежда се страхувате.

Ако забраните присъединяването, не можете да направите това, освен ако не използвате съхранена процедура, което бих казал, че е по-лошо от присъединяването.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да вмъкна големи файлове в MySQL db с помощта на PHP?

  2. Невалиден номер на параметъра:броят на свързаните променливи не съвпада с броя на токените в Doctrine

  3. Не мога да създам модел на данни за обект - използвайки MySql и EF6

  4. MySQL:Име на първичния ключ в израза CREATE TABLE

  5. Местоположението на конфигурационния файл на MySQL (т.е.:my.cnf) не е посочено