如何从表中选择除外表中的值之外的所有值?

Posted

技术标签:

【中文标题】如何从表中选择除外表中的值之外的所有值?【英文标题】:How to select all the values from a table except the values which are in foreign table? 【发布时间】:2019-02-11 00:59:55 【问题描述】:

我有三张桌子:tbl_borrower, tbl_clientandtbl_guarantor

tbl_Client:
    id|name|address|email|

tbl_Guarantor:
    id|clientid(fk)|Guaranteed_date|borrower_id(fk from borrower table)

我想检索客户表的所有值,除了Laravel 5.5控制器的担保人表中存在的值。

【问题讨论】:

【参考方案1】:

一旦你建立了模型和关系,你应该这样做:

Client::doesntHave('guarantor')->get()

https://laravel.com/docs/5.6/eloquent-relationships#querying-relationship-absence

【讨论】:

【参考方案2】:

如果您使用的是查询生成器,则为:

 $clients = DB::table('tbl_clients')
        ->join('tbl_guarantor', 'tbl_clients.id', '=', 'tbl_guarantor.clientid')
        ->select('tbl_clients.*')
        ->whereNull('tbl_guarantor.clientid')
        ->get();

https://laravel.com/docs/5.5/queries

在使用左连接并根据此答案在第二个表 id 上测试 NULL 的前提下。 https://***.com/a/4076157/3585500

【讨论】:

【参考方案3】:

试试这个:

DB::table('tbl_Client')
      ->groupBy('tbl_Client.id')                           
      ->leftjoin('tbl_Guarantor', 'tbl_Client.id', '=', 'tbl_Guarantor.clientid')                           
      ->get([
           'tbl_Client.*'
       ]);

【讨论】:

以上是关于如何从表中选择除外表中的值之外的所有值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从表中删除除前两个和最后一个之外的所有行?

如何针对mysql中的值选择除较低值记录之外的记录? [关闭]

SQL查询:从表中删除除最新N之外的所有记录?

如何从表中选择所有列并计数?

从表中的多个值中选择不在数组中的位置

如何从表中选择熊猫系列中的值?