我在 SQLite 数据库中有主题表和教程表。我正在尝试选择当前教程。有我的桌子
-
科目表:
-------------------
| id | name |
-------------------
| 1 | Chemistry |
| 2 | Physic |
-------------------
-
教程表:
-----------------------------------------
| id | name | subj_id | completed |
-----------------------------------------
| 1 | chapter 1 | 1 | 1 |
| 2 | chapter 2 | 1 | 0 |
| 3 | chapter 3 | 1 | 0 |
| 4 | chapter 1 | 2 | 1 |
| 5 | chapter 2 | 2 | 1 |
| 6 | chapter 3 | 2 | 0 |
| 7 | chapter 4 | 2 | 0 |
-----------------------------------------
我现在的口才是:
$query->where('completed', false)->groupBy('subj_id')->get();
它返回以下内容:
-----------------------------------------
| id | name | subj_id | completed |
-----------------------------------------
| 3 | chapter 3 | 1 | 0 |
| 7 | chapter 4 | 2 | 0 |
-----------------------------------------
现在我想选择 id 2 和 6。
-----------------------------------------
| id | name | subj_id | completed |
-----------------------------------------
| 2 | chapter 2 | 1 | 0 |
| 6 | chapter 3 | 2 | 0 |
-----------------------------------------
我怎样才能使用sqlite获得id 2和6?
我的问题在 @zerofl4g 的帮助下解决了。
这个雄辩得到了@zerofl4g 的帮助。
$query->select(DB::raw("SELECT MIN(id), name, subj_id FROM tutorials
WHERE completed = 0 GROUP BY subj_id"));
它对我不起作用,但对我有很大帮助。我不知道为什么对我不起作用的确切原因,但我认为我将它用作子查询。所以我得到了重复的选择和错误。它肯定适合那些想要用作单个查询的人。
我的解决方案只是选择带有 DB::raw 的列, ->from('tutorials') 也是可选的,因为它是长查询的子查询
$query->select(DB::raw('MIN(id) as id, name, subj_id'))->from('tutorials')
->where('completed', false)->groupBy('subj_id');
我使用的最终雄辩是
$query->select(DB::raw('MIN(id) as id, name, subj_id'))
->where('completed', false)->groupBy('subj_id');`
希望对您有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)