/ / próbujesz uzyskać losową wartość z dwóch tabel za pomocą mysql? - mysql

próbuje uzyskać losową wartość z dwóch tabel przy użyciu mysql? - mysql

SELECT *
FROM fixed_questions
WHERE examid = 15
ORDER BY RAND() LIMIT 1

UNION ALL

SELECT *
FROM questions
WHERE examid = 15
ORDER BY RAND() LIMIT 4;

To jest moje zapytanie, a także próbuję tego kodu. Czy można to zrobić, może nie jestem pewien, czy unia działa, czy nie dla mysql. Głównym problemem jest przypadkowa wartość jedna tabela otrzymuje 1, a inna tabela otrzymuje 4 (to moja logika). Jak to zrobić

SELECT *
FROM v_fixed_questions vf
,v_questions vq ON (vf.examid = vq.examid)

Odpowiedzi:

0 dla odpowiedzi № 1

Myślę, że głównym problemem jest to, aby użyć LIMIT ze związkiem musi znajdować się w faktycznym podzapytaniu, a nie na poziomie zewnętrznym. Możliwe jest użycie LIMIT na końcu kwerendy związkowej, ale wówczas dotyczyłaby całego zestawu wyników unii, a nie jednego z podkwerend.

(
SELECT *
FROM fixed_questions
WHERE examid = 15
ORDER BY RAND()
LIMIT 1
)
UNION ALL
(
SELECT *
FROM questions
WHERE examid = 15
ORDER BY RAND()
LIMIT 4
);

Ta odpowiedź zakłada, że fixed_questions i questions tabele mają tę samą liczbę kolumn (najlepiej tego samego typu). Jeśli nie, prośba o połączenie dwóch pełnych tabel może nie mieć sensu.