sql >> Databáze >  >> RDS >> Mysql

Vynutit MySQL, aby vrátilo duplikáty z klauzule WHERE IN bez použití JOIN/UNION?

Nejsem si jistý, proč chcete zakázat JOIN, protože je to pro SQL docela zásadní. Je to jako zakázat volání funkcí ve funkčním jazyce.

Dobrým způsobem, jak to vyřešit, je vytvořit sadu výsledků obsahující ID, která chcete vrátit, a připojit se k ní. Zde je jeden způsob, jak to udělat:

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

Nejsem si jistý, zda jste uvažovali o této metodě? Nemá žádný z problémů, kterých se, jak se zdá, bojíte.

Pokud zakážete připojení, nemůžete to udělat, pokud nepoužijete uloženou proceduru, což je podle mého názoru horší než připojení.




  1. Funkce MAX v klauzuli where mysql

  2. Výmluvná skupinaBy make SQLSTATE[42000] s platným SQL dotazem v Laravel 5.3

  3. SQL vnořené pořadí podle?

  4. Dotaz MySQL se zasekl a musel proces zabít