我有一个巨大的选择,基本上 3 个选择与 2 个 UNION 粘在一起。我的每个选择中的所有选择列都是相同的。每个人都不同的一件事是 WHERE 子句。它们都具有几乎相同的 where 条件(每个条件中只有一个条件与其他条件不同)。我的陈述是这样的
(SELECT column_name1, column_name2, column_name3, ....
FROM users
LEFT JOIN ...
ON ...
LEFT JOIN ...
(bunch of LEFT JOINS)
.
.
.
WHERE (SAME CONDITIONS) AND program_id = 3 order by RAND() limit 100)
UNION
(SELECT column_name1, column_name2, column_name3, ....
FROM users
LEFT JOIN ...
ON ...
LEFT JOIN ...
(bunch of LEFT JOINS)
.
.
.
WHERE (SAME CONDITIONS) AND program_id = 2 order by RAND() limit 100)
(SELECT column_name1, column_name2, column_name3, ....
FROM users
LEFT JOIN ...
ON ...
LEFT JOIN ...
(bunch of LEFT JOINS)
.
.
.
WHERE (SAME CONDITIONS) AND program_id = 1 order by RAND() limit 100)
从这个选择中,我还想选择一些其他数据。我这样做是因为我希望有不同的用户顺序,但他们的顺序需要始终从最高程序到最低程序。问题是我可以以某种方式使这个选择更短吗?因为几乎所有东西都相同但只有一个条件是没有意义的。当我在那里发现错误或想要更改某些内容时(因为这只是选择的一部分),我必须重写所有内容。你能帮我么 ?