【问题标题】:Extract rows from multiple MySQL tables based on date根据日期从多个 MySQL 表中提取行
【发布时间】:2014-08-03 01:31:46
【问题描述】:

我有三个 MySQL 表,它们都有相同的列,例如:

ID | title   | description | date
---|---------|-------------|-----------
1  | Title 1 | Desc 1      | 2014-06-12
2  | Title 2 | Desc 2      | 2014-05-12
...

我想做的是从所有三个表中提取日期在某个时间点之后的所有行,例如一个月前,然后按日期顺序排列它们,最新的在前,在新的组合中桌子。我尝试了各种JOINS,但到目前为止我想出的结果都没有满足我的需求;我似乎得到的是表格彼此左右连接,而不是被拉到一个“主表”中。

我将如何创建我正在寻找的表?

【问题讨论】:

  • “彼此左右连接”没有意义,除非表之间存在某种关系。

标签: mysql date join


【解决方案1】:

我不确定这里是否还有其他事情使这变得更复杂,但我认为这应该可行:

SELECT * FROM table_1
JOIN table_2 ON table_2.id = table_1.id
JOIN table_3 ON table_3.id = table_1.id
WHERE table_1.date >= '2014-05-12' /*one month ago or whatever date you want*/
ORDER BY table_1.date, DESC

或者,如果您想更改列名,请在 SELECT 中执行此操作:

SELECT table_1.id as t1_id, table_2.id as t2_id, /*etc*/

【讨论】:

  • 这行得通,所以谢谢你,但是假设我在每个表中有六个条目,那么我会为每个条目返回六个重复的结果。有没有办法避免这种行为?
  • 好的,没问题...但是,如果您在谈论列名,您可以通过 as 更改这些名称(在我的回答中更新)
猜你喜欢
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
相关资源
最近更新 更多