【问题标题】:MySQL join two completely identical tables with WHEREMySQL 使用 WHERE 连接两个完全相同的表
【发布时间】:2018-08-03 05:55:29
【问题描述】:

我有两个名称不同的相同表。第一个名称是“文件夹”,第二个名称是“folders_archive”。 我喜欢通过在日期过滤它来将这两个表与他们的全部内容进行 INNER JOIN。如果我使用两个单个查询,那可以正常工作,但连接的查询没有结果。

我喜欢这样的:

SELECT * 
FROM folders 
INNER JOIN folders_archiv  
 ON folders_archiv.id= folders.id  
WHERE folders_archiv.datum = '".$year."-".$month."-".$day."'  
AND folders.datum = '".$year."-".$month."-".$day."';

我正在尝试以多种方式连接这些表,但我的逻辑有问题,请帮助解决它。

谢谢。

【问题讨论】:

  • 很难说不知道结果应该是什么。
  • 我猜你需要一个联合,而不是一个连接。
  • 分享两张表的数据和你从中得到的数据

标签: mysql join inner-join union


【解决方案1】:

您的问题不是很清楚,我认为您需要 Union - 为您提供两个表中的所有记录而不重复(如果可以接受重复,请使用 union all)。例如:

select t1.* from (
SELECT column_names 
FROM folders 
UNION
SELECT column_names 
FROM folders_archive) t1
WHERE t1.column_names = what_you_want;

【讨论】:

  • 一般最好将WHERE子句放在UNION的查询中,而不是合并后过滤。
【解决方案2】:

非常模糊的问题。

但是试试这个:

SELECT * 
FROM folders 
INNER JOIN folders_archiv  
 ON folders_archiv.datum= folders.datum  
WHERE folders_archiv.datum = '".$year."-".$month."-".$day."'  

【讨论】:

  • 他为什么要试试这个?一个好的答案应该解释原始代码中的错误以及您如何纠正它。
猜你喜欢
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 2016-07-18
  • 1970-01-01
相关资源
最近更新 更多