2

如果houses.owner_id 大于零,我是否可以以某种方式加入人员,而不是进行 2 个查询?

SELECT * FROM houses 
INNER JOIN persons ON persons.id = houses.owner_id 
WHERE houses.id = id
4

5 回答 5

2

将条件移动到联接的条件中:

SELECT * FROM houses 
JOIN persons ON persons.id = houses.owner_id 
    AND houses.owner_id > 0
WHERE houses.id = id

仅当 owner_id > 0 时才会加入。


这个查询有点奇怪,因为您没有使用连接数据。

于 2013-06-15T13:20:27.403 回答
1

尝试:

SELECT * FROM houses 
INNER JOIN persons ON persons.id = houses.owner_id 
WHERE houses.id = id AND houses.owner_id > 0

不确定为什么 owner_id 会小于 0?也许是一个糟糕的数据库设计。也SELECT *被认为是不好的做法,请尝试明确说明您的列。

于 2013-06-15T11:33:22.887 回答
0

为什么不将它作为 where 条件传递呢?

SELECT * FROM houses 
INNER JOIN persons ON persons.id = houses.owner_id 
WHERE houses.id = id AND houses.owner_id > 0
于 2013-06-15T11:34:27.797 回答
0

您必须使用 house.owner_id > 0 的计数。需要具有和 group by 子句。此外,这不是一个好的 SQL 设计。

于 2013-06-15T13:03:29.020 回答
0

其他答案可能是您想要的,但为了完整起见,您可能需要调整JOIN子句:

SELECT * FROM houses 
INNER JOIN persons ON persons.id = houses.owner_id AND houses.owner_id > 0
WHERE houses.id = id
于 2013-06-15T13:15:30.510 回答