我在数据库A、B和C中有3个表,它们共享相同的列"NAME". B具有属性"TITLE",而C具有属性"AGE".
我希望写一个SQL查询,我将不得不 Select 基于查询输入A的所有内容,无论是B.title,C.age或所有它们.
到目前为止,我所try 的是,
SELECT * FROM A
LEFT JOIN B ON A.name = B.name
LEFT JOIN C ON A.name = C.name
WHERE B.title = COALESCE($1, B.title)
AND C.age = COALESCE($2, C.age)
$1和$2来自外部程序.例如,$1="Jones"和$2=12.
我从上面的查询中得到的结果为空.也左联看起来很贵.有没有更快的方法来实现这一点,而不是加入谈判桌.
如果$1为NULL,则查询将不会有来自B表的任何连接.我想从A中取回名称.如果$2为空,则查询将不会联接C表,依此类推.如果两者都为空,它将返回A拥有的任何内容.