我有三张table:
t_tbl
-----
t_id PK
t
p_tbl
-----
p_id PK
p
x_tbl
-----
x_id PK
x
t_id
p_id
我的搜索是分开工作的:
查询1:
SELECT x
FROM x_tbl xt
INNER JOIN
t_tbl tt
ON
xt.t_id = tt.t_id
问题2:
SELECT x
FROM x_tbl xt
INNER JOIN
p_tbl pt
ON xt.p_id = pt.p_id
但我想得到 xt.x
如果 xt.t_id = tt.t_id
OR xt.p_id = pt.p_id
3条答案
按热度按时间f2uvfpb91#
我会尝试两个左连接,然后评估是否找到其中一个:
hjzp0vay2#
也许 吧
UNION
结果如何?mum43rcc3#
任何
JOIN
它可以在另一边找到多个匹配的行(从描述中不清楚这种情况是否会发生在您的db设计中。)似乎您不希望这样。另一边有许多行和/或多个连接,很快就会变得非常昂贵。好像你想要一排
x_tbl
,在符合条件的情况下。EXISTS
是一种永远不会在x_tbl
. 它也应该是最快的。这可能发生在2x上
LEFT JOIN
:两个sql左连接产生不正确的结果