id

表A的数值

+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
+----+

表B的数值

+----+-----------+----------+
| id | parent_id |  status  |
+----+-----------+----------+
|  1 |         1 |  started |
|  2 |         2 |  stopped |
|  3 |         1 |  stopped |
|  4 |         1 |  stopped |
+----+-----------+----------+

A关系B是1:N

我如何才能从表A中只得到那些状态不是Started的id。

SELECT 
   id 
FROM A 
JOIN B ON A.id=B.parent_id and B.status <> 'started';

当我运行上述查询时,我得到以下结果

+----+
| id |
+----+
|  1 |
|  2 |
+----+

它不是只显示值2,而是也显示1。我写的查询有什么问题?

解决方案:

然而,按照建议,你很可能最终会在表B中出现很多不必要的重复–很多行都说开始和停止了,不一定是按时间顺序来的(例如–A.id=1的第一条记录表明它已经开始了,第3条和第4条记录(估计是之后输入的)停止了它,但你会因为开始了而排除这条记录。

SELECT A.id FROM A JOIN B ON A.id=B.parent_id and B.status != 'started'

为什么不改变你的表结构来更新单行?

+----+
| id |
+----+
|  2 |
|  1 |
|  1 |
+----+

给TA打赏
共{{data.count}}人
人已打赏
未分类

在laravel中验证json数据的唯一字段。

2022-9-8 22:33:37

未分类

用背景色填充div元素,并去除div之间的空间。

2022-9-8 22:33:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索