我有一个查询,它将user.id上的两个表(users,records)连接起来,user.id对应于records.user\u id
records表包含多行,其中“type”列的值集为1或0。
DB::table('users')
->join('records_dev.records', function($join) {
$join->on('users.id', '=', 'records.user_id')
->where(...);
})
->get()->toArray();
我希望它返回任何没有备用“type”值但无法确定如何执行此逻辑的用户。
假设abod返回一个类型值为0 1 0的用户数组这是正常的,我希望它只向记录中包含0 0 1、1 1 0等的用户发出信号。
任何帮助都将不胜感激。
2条答案
按热度按时间k3fezbri1#
您可以两次联接records表,第二次联接时将id移动1。然后可以比较r1.type=r2.type,这意味着type列中的连续行是相同的。
此外,在这种情况下还需要进行自定义选择。
应该是这样的:
或者像这样:
这假设记录表中的user\ id列中没有间隙。如果存在间隙,则可以向records表中添加一个新列并对其排序(1、2、3、…)。然后使用该列,而不是像这样使用user\u id(如果新列名为seq):
e4yzc0pl2#
我找到了这样一种解决方案,即只为第二个“records”表创建一个临时表。
这样我们就可以很容易地找到任何连续的条目。
有没有更简单的方法?只是问问而已。