无法合并三个 SELECT 语句,UNION 不起作用
Trouble combining THREE SELECT statements, UNION not working
我在组合三个 select 语句时遇到了很大的麻烦,我试过联合它不起作用,因为单独的 select 语句它们确实有效但是我需要其余的是一个 swift 语句,如果可能甚至将最终记录以随机顺序排列
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) = 'seznam.cz'
ORDER BY RAND()
LIMIT 6
UNION
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) = 'gmail.com'
ORDER BY RAND()
LIMIT 6
UNION
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) != 'gmail.com'
AND substring_index(email, '@', -1) != 'seznam.cz'
AND RAND() < (SELECT ((6/COUNT(*))*10)
FROM customer_1_tbl)
ORDER BY RAND()
LIMIT 6
如果您在每个查询中都需要 ORDER BY,那么试试这个:
SELECT * FROM(
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) = 'seznam.cz'
ORDER BY RAND()
LIMIT 6
) AS A
UNION
SELECT * FROM (
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) = 'gmail.com'
ORDER BY RAND()
LIMIT 6
) AS B
UNION
SELECT * FROM (
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) != 'gmail.com'
AND substring_index(email, '@', -1) != 'seznam.cz'
AND RAND() < (SELECT ((6/COUNT(*))*10)
FROM customer_1_tbl)
ORDER BY RAND()
LIMIT 6
) AS C
为了在部分查询而不是整体查询上使用 ORDER BY 子句,请使用括号:
(
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) = 'seznam.cz'
ORDER BY RAND()
LIMIT 6
)
UNION
(
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) = 'gmail.com'
ORDER BY RAND()
LIMIT 6
)
UNION
(
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) != 'gmail.com'
AND substring_index(email, '@', -1) != 'seznam.cz'
AND RAND() < (SELECT ((6/COUNT(*))*10)
FROM customer_1_tbl)
ORDER BY RAND()
LIMIT 6
)
我在组合三个 select 语句时遇到了很大的麻烦,我试过联合它不起作用,因为单独的 select 语句它们确实有效但是我需要其余的是一个 swift 语句,如果可能甚至将最终记录以随机顺序排列
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) = 'seznam.cz'
ORDER BY RAND()
LIMIT 6
UNION
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) = 'gmail.com'
ORDER BY RAND()
LIMIT 6
UNION
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) != 'gmail.com'
AND substring_index(email, '@', -1) != 'seznam.cz'
AND RAND() < (SELECT ((6/COUNT(*))*10)
FROM customer_1_tbl)
ORDER BY RAND()
LIMIT 6
如果您在每个查询中都需要 ORDER BY,那么试试这个:
SELECT * FROM(
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) = 'seznam.cz'
ORDER BY RAND()
LIMIT 6
) AS A
UNION
SELECT * FROM (
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) = 'gmail.com'
ORDER BY RAND()
LIMIT 6
) AS B
UNION
SELECT * FROM (
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) != 'gmail.com'
AND substring_index(email, '@', -1) != 'seznam.cz'
AND RAND() < (SELECT ((6/COUNT(*))*10)
FROM customer_1_tbl)
ORDER BY RAND()
LIMIT 6
) AS C
为了在部分查询而不是整体查询上使用 ORDER BY 子句,请使用括号:
(
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) = 'seznam.cz'
ORDER BY RAND()
LIMIT 6
)
UNION
(
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) = 'gmail.com'
ORDER BY RAND()
LIMIT 6
)
UNION
(
SELECT DISTINCT email
FROM customer_1_tbl
WHERE email NOT IN (SELECT temp.email
FROM temp_emails AS temp)
AND substring_index(email, '@', -1) != 'gmail.com'
AND substring_index(email, '@', -1) != 'seznam.cz'
AND RAND() < (SELECT ((6/COUNT(*))*10)
FROM customer_1_tbl)
ORDER BY RAND()
LIMIT 6
)