Sql 仅当字段大于零时联接
如果houses.owner\u id大于零,我是否可以加入persons而不是进行2次查询Sql 仅当字段大于零时联接,sql,database,join,Sql,Database,Join,如果houses.owner\u id大于零,我是否可以加入persons而不是进行2次查询 SELECT * FROM houses INNER JOIN persons ON persons.id = houses.owner_id WHERE houses.id = id 尝试: 不确定为什么所有者id小于0?也许是一个糟糕的数据库设计。另外,SELECT*被认为是不好的做法,请尝试明确说明您的列 为什么不把它作为where条件传入呢 SELECT * FROM houses IN
SELECT * FROM houses
INNER JOIN persons ON persons.id = houses.owner_id
WHERE houses.id = id
尝试:
不确定为什么所有者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\u id>0的计数。需要使用and 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
将条件移动到联接的条件中:
SELECT * FROM houses
JOIN persons ON persons.id = houses.owner_id
AND houses.owner_id > 0
WHERE houses.id = id
只有当所有者id>0时,才会加入
这个查询有点奇怪,因为您没有使用连接的数据。您希望结果包含owner\u id=0的房屋吗?您不能只执行
WHERE houses.id=id和houses.owner\u id>0
?我可能应该将其作为一个答案而不是注释来编写。WHERE houses.id=id应该做什么?这将导致名称引用不明确,因为两个表都有一个id
,并且它看起来好像预期的连接条件是persons.id=houses.owner\u id
。同意-有趣-但可能它的意思是“某人拥有的房子”
SELECT * FROM houses
JOIN persons ON persons.id = houses.owner_id
AND houses.owner_id > 0
WHERE houses.id = id