繁体   English   中英

加入2个表SQL查询

[英]Join 2 tables SQL query

我正在尝试从2个表中为Select编写查询。

表格如下:

Table_1: 
id (int)
name (varchar)
status int (0,1)

Table_2: 
id (int)
table_1_id (int)
name (varchar)
time (datetime)

我需要选择Table_2中不超过1天且与table_1状态为1相关联的所有行。我现在的方法是使用2个查询和2个foreach数组,效率非常低。 有人可以帮我写一个带连接的查询吗? 感谢您的时间。

不需要循环,你可以在表之间做一个JOIN

select t2.*
from Table_2 t2 join Table_1 t1 on t2.table_1_id = t1.id
where t1.status = 1
and date(t2.`time`) = date(now() - interval 1 day);
SELECT table_2.* FROM table_1 t1 INNER JOIN table_2 t2 ON t2.table_1_id=t1.id 
WHERE t1.status=1 AND time < (NOW() - INTERVAL 1 DAY);

您必须使用ON来连接表,因为相关字段的名称不同。 否则你可以加入USING(id_field) 在你的情况下,内连接可能是最有用的。 如果你想匹配table_1的结果,你可以使用左连接,即使table_2中没有对应的结果,例如

不需要2个查询。 您可以使用1个查询:

SELECT t2.* FROM Table_1 t1, Table_2 t2
WHERE t1.id = t2.table_1_id AND
    t1.status = 1 AND
    DATE(t2.'time') >= DATE(now() - INTERVAL 1 DAY)

因为你想要

我需要选择Table_2中不超过1天的所有行

所以我们必须有大于或等于运算符:

DATE(t2.'time') >= DATE(now() - INTERVAL 1 DAY)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM