MYSQL从另一个查询导入多个“或”条件

MYSQL从另一个查询导入多个“或”条件,mysql,sql,subquery,where-clause,Mysql,Sql,Subquery,Where Clause,是否可以创建具有以下多个或多个条件的查询: SELECT * FROM trans WHERE (web = 'web1' AND date BETWEEN ('first_date1' AND 'last_date1') OR (web = 'web2' AND date BETWEEN ('first_date2' AND 'last_date2') OR (web = 'web3' AND date BETWEEN ('first_date3' AND 'las

是否可以创建具有以下多个或多个条件的查询:

SELECT
  *
FROM
  trans 
WHERE 
  (web = 'web1' AND date BETWEEN ('first_date1' AND 'last_date1') OR 
  (web = 'web2' AND date BETWEEN ('first_date2' AND 'last_date2') OR 
  (web = 'web3' AND date BETWEEN ('first_date3' AND 'last_date3') OR
  (web = 'web4' AND date BETWEEN ('first_date4' AND 'last_date4') OR
  ...
  ...
WHERE 
  something1
其中,Where子句中的一行或多行可以从另一个表的另一个查询中获取:

SELECT id, web, first_date, last_date
FROM
  alerts 
WHERE 
  something2
最后一个查询将给出一个如下表:

+-----+------+-------------+------------+
| ID  | web  | first_date  | last_date  |
+-----+------+-------------+------------+
| 23  | web1 | first_date1 | last_date1 |
+-----+------+-------------+------------+
| 2   | web2 | first_date2 | last_date2 |
+-----+------+-------------+------------+
| 33  | web3 | first_date3 | last_date3 |
+-----+------+-------------+------------+
| 5   | web4 | first_date4 | last_date4 |
+-----+------+-------------+------------+
| ... | ...  | ...         | ...        |
+-----+------+-------------+------------+
因此,我希望在第一个查询中得到的结果类似于从上一个表中每行执行一个查询,例如:

SELECT * FROM trans 
WHERE web = 'web1' AND date BETWEEN ('first_date1' AND 'last_date1')

SELECT * FROM trans 
WHERE web = 'web2' AND date BETWEEN ('first_date2' AND 'last_date2')

and so on ...

如果我没有弄错,您可以使用exists:


它看起来像是连接问题:

SELECT
  trans.*, a.alert_id
FROM
  trans t
JOIN 
 (
   SELECT id as alert_id, web, first_date, last_date 
   FROM  alerts 
   WHERE 
   something2
 ) as  ON (
   a.web = t.web1 AND 
   t.date BETWEEN (a.first_date1 AND a.last_date1)
 )
WHERE 
  something

这或行是什么意思?请看“附加警报id”使我认为这需要一个连接。这确实是一个连接问题,但由于连接的表有自己的条件,我创建了一个对答案的编辑,添加了它们。太多了!!!
SELECT
  trans.*, a.alert_id
FROM
  trans t
JOIN 
 (
   SELECT id as alert_id, web, first_date, last_date 
   FROM  alerts 
   WHERE 
   something2
 ) as  ON (
   a.web = t.web1 AND 
   t.date BETWEEN (a.first_date1 AND a.last_date1)
 )
WHERE 
  something