如果houses.owner_id 大于零,我是否可以以某种方式加入人员,而不是进行 2 个查询?
SELECT * FROM houses
INNER JOIN persons ON persons.id = houses.owner_id
WHERE houses.id = id
将条件移动到联接的条件中:
SELECT * FROM houses
JOIN persons ON persons.id = houses.owner_id
AND houses.owner_id > 0
WHERE houses.id = id
仅当 owner_id > 0 时才会加入。
这个查询有点奇怪,因为您没有使用连接数据。
尝试:
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 *
被认为是不好的做法,请尝试明确说明您的列。
为什么不将它作为 where 条件传递呢?
SELECT * FROM houses
INNER JOIN persons ON persons.id = houses.owner_id
WHERE houses.id = id AND houses.owner_id > 0
您必须使用 house.owner_id > 0 的计数。需要具有和 group by 子句。此外,这不是一个好的 SQL 设计。
其他答案可能是您想要的,但为了完整起见,您可能需要调整JOIN
子句:
SELECT * FROM houses
INNER JOIN persons ON persons.id = houses.owner_id AND houses.owner_id > 0
WHERE houses.id = id