sql - Sqlite 从两个表中选择并按限制排序
问题描述
SELECT y.M_id,SUM(t.alarm_sum),y.yarn1,AVG(t.yarn1_in),SUM(t.yarn1_alarm)
FROM '111' t, yarn y
WHERE t.date=date('now') AND y.M_id='111'
ORDER BY t.row_id DESC
LIMIT 5
我想从 2 个表中获取数据:'111' 和纱线,但我只想要来自 '111' 的最后 5 行数据。我运行了它,但输出不受“111”表中的 5 行限制。需要改变什么?
解决方案
您可以使用子查询,例如
select ...
from (select * from '111' order by row_id desc limit 5) t,
yarn y
[...]
但是,我不清楚这是否有意义,也不清楚您要达到什么目的。
您在这里所做的是笛卡尔连接:从功能上讲,数据库将选择 t 的所有行,y 的所有行,创建两者的每个组合(因此它将创建 t 的第一行与所有 y 的组合, t 是所有 y, ...) 的第二行,然后它将根据您的条件进行过滤,最后是 order 和 limit。
我很惊讶你从 t 得到的除了最后一行之外的任何东西。
(在 sqlite 中也调用列row_id
似乎是个坏主意,因为它很容易与数据库自己的rowid
混淆)。
推荐阅读
- reactjs - React JS:期望一个字符串但得到:对象
- javascript - Webpack Encore & jQuery 插件:$(...).isotope 不是函数
- python - 如何使用 Django Rest Framework 显示基于子类别的问题?
- python - 使用 AutoScraper 进行网页抓取,得到空列表
- tabs - AMP-Selector:如何在页面加载时动态绑定所选属性
- macos - React Native macOS 组件异常
- css - Android 上无法识别的字体问题 - Google Chrome
- node.js - 来自反应的快速 POST 请求返回空对象
- node.js - AWS Elastic Beanstalk 为负载平衡环境中的大多数请求返回 502(日志中为 499)
- sql-server - SQL Server:查询以从同一个表和另一个表中获取数据