我试图从客户端和债券表中检索一切,其中client.id不等于bond.client和债券client.bond不等于bond.id.我的查询不起作用,而是返回整个列表。我怎么解决这个问题?我的查询想要从客户端表输出4,5,从结果表输出5,5作为结果
客户表
Id Bond
1 2
2 3
4 5
债券表
Id Client
2 1
3 2
5 5
SELECT * FROM `client_table`
INNER JOIN `bond_table`
where client_table.id != bond_table.client and client_table.bond != bond_table.id
答案 0 :(得分:0)
可能在子句
中没有使用 SELECT * FROM `client_table`
INNER JOIN `bond_table` on client_table.id
not in ( select bond_table.client from bond)
AND client_table.bond not in ( select bond_table.id from bond)
但是根据你在评论中显示的resukt你应该使用OR(而不是AND)
SELECT * FROM `client_table`
INNER JOIN `bond_table` on client_table.id
not in ( select bond_table.client from bond)
OR client_table.bond not in ( select bond_table.id from bond)
答案 1 :(得分:0)
请试试这个:
SELECT c.ClientID, c.BondID from client_table c
left join bond_table b
on c.clientID = b.clientID
where b.clientID is null
UNION
SELECT b.ClientID, b.BondID from bond_table b
left join client_table c
on c.clientID = b.clientID
where c.clientID is null