是否有任何查询我们只需要编写我们不想显示的列? SQL / Laravel的

时间:2019-03-09 09:16:08

标签: sql laravel

考虑2表

  1. 表1
    (ID,名称,电话号码,州,城市,国家........)
  2. 表2
    (id,profession,personId)

我想显示所有列条目(不包括Table2.id)

我们正在使用的传统查询

SQL:

SELECT Table1.id, Table1.name, Table1.phoneNumber, Table1.state, Table1.city, Table1.country,
........, Table2.profession FROM Table1 join Table2 on Table2.personId=Table1.id

Laravel:

Table1::join('Table2', 'Table2.personId', 'Table1.id')
    ->Select('Table1.id', 'Table1.name', 'Table1.phoneNumber', 'Table1.state', 'Table1.city', 'Table1.country', ........, 'Table2.profession')
    ->get();

我们知道我们必须在查询中写入列名称。是否有任何查询可以最大程度地减少编写工作,这意味着我们只需要编写不想显示的列?

2 个答案:

答案 0 :(得分:1)

您可以为此使用所有字符(*

SELECT Table1.*, Table2.profession FROM Table1 join Table2 on Table2.personId=Table1.id

或使用Laravel的查询生成器:

DB::table('Table1')
    ->select('Table1.*', 'Table2.profession')
    ->join('Table2', 'Table1.id', 'Table2.personId')
    ->get();

答案 1 :(得分:0)

我也得到了类似的答案(如果错误地出现任何语法错误,请忽略) 对于Laravel:

DB::table('Table1')
    ->join(DB:Raw('(SELECT personId,profession from Table2) as TempTable'), 'Table1.id', 'TempTable.personId')
    ->get();

对于SQL:

Select * from Table1 Join (SELECT personId,profession from Table2 ) as TempTable on TempTable.personId=Table1.id