查找两个表MySQL的匹配记录

时间:2014-05-21 11:38:11

标签: php mysql sql

我有两个表book1和book2。我在两个表中都有issue_date列。我想从两个表中获取记录以匹配发布日期。

book1和book2包含以下列 -

book_id | user_id | numofbooks | issue_date

我尝试了下面给出的SQL查询但不起作用 -

SELECT * FROM `book1`, `book2` WHERE issue_date between '2014-04-06' and '2014-05-07';

引发错误。有可能以SQL方式执行,还是应该单独查询两个表并合并结果集?

3 个答案:

答案 0 :(得分:4)

你的问题对于你真正想做的事情有点模糊。我怀疑你真的想要两张表中所有匹配记录的笛卡尔积。

我想你想要这样的东西:

SELECT *
FROM book1
WHERE issue_date between '2014-04-06' and '2014-05-07'
UNION ALL
SELECT *
FROM book2
WHERE issue_date between '2014-04-06' and '2014-05-07';

这假设两个表具有完全相同的列,这些列以相同的顺序定义(反过来,这表明数据库设计不正确)。实际上,您会将*替换为您真正想要的列。

答案 1 :(得分:2)

使用UNION ALL

SELECT * FROM book1
WHERE issue_date between '2014-04-06' and '2014-05-07'
UNION ALL
SELECT * FROM book2
WHERE issue_date between '2014-04-06' and '2014-05-07';

这只有在book1和book2具有相同顺序的相同列时才有效,在这种情况下,为什么它首先没有设计为1个表格,这是有问题的。

如果列不完全匹配,您可以将*替换为相关的列名。

答案 2 :(得分:2)

您可以应用上面提到的全部联盟功能,但您应该在表1和表2中都使用字段的相同名称。第二册