当列不明确时,有什么方法可以强制Mysql使用select in where子句中的列吗?

时间:2017-03-02 10:55:46

标签: php mysql sql laravel laravel-5.2

我有疑问:

select products.* from products
join companies on companies.id = products.company_id
where id = 1;

查询生成错误"列' id'在where子句中含糊不清"。我知道该列不明确,但我想告诉mysql只查看select" products中的列。"。所以,如果我有"产品。"如果我有"公司,那么产品的ID将在where子句中进行检查。"公司的ID将在where子句中进行检查,如果我有"产品。,公司。*"只有那时id才会含糊不清。

这只是一个简单的例子,查询更复杂并且由ORM生成。我知道我可以使用

select products.id as products_id from products

然后使用

where products_id  = 1

或者我可以使用

where products.id = 1;

但这不符合我的需要,因为查询是由orm生成的。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以在编写时指定要使用哪个表ID:

WHERE products.id = 1

使用eloquent时,你可以使用DB :: raw:

DB::table('products')
    ->select(DB::raw('products.*'))
    ->join('companies', DB::raw('companies.id'), '=', DB::raw('products.company_id'))
    ->where(DB::raw('products.id'), '=', 1)
    ->get()
;

答案 1 :(得分:-2)

select products.* from products
join companies on companies.id = products.company_id
where products.id = 1;