我正在创建一个Web服务,该服务将有关产品的信息发送给用户,但前提是信息已更新。因此,例如,我有一个包含翻译的表格,我想获得此产品的所有翻译,但前提是这些翻译中的一个updated_at
行高于特定时间戳。这可以在一个查询中实现吗?
这是我在此示例中的翻译表:
+---------------+
| Translations |
+---------------+
| product_id |
| slug |
| value |
| language_code |
| created_at |
| updated_at |
+---------------+
SELECT * FROM Translations WHERE product_id IN (1, 2, ...);
目前我总是加载所有产品的翻译并使用PHP代码过滤掉它们。但是,这对我的服务器造成了很大的负担,我想减少它 我总是希望在更新产品时发送产品的所有翻译,以便最终用户知道它可以删除所有现有翻译并添加这些翻译。
感谢您的帮助。
答案 0 :(得分:1)
有一个子查询,它返回具有比特定时间戳更晚的updated_at值的产品的product_id。 Join
结果可以获得这些产品的所有行。
select t1.*
from tablename t1
join (select distinct product_id
from tablename
where updated_at > :that_timestamp) t2
on t1.product_id = t2.product_id