0
因此,我在我的应用程序中实现了搜索功能,并且我需要编写SQL查询来根据各种可能的参数在数据库中搜索记录。我包括样本是我到目前为止有:如何使用各种参数创建SQL搜索查询
SELECT m.*, a.*, p.*, e.*
FROM members m
LEFT JOIN addresses a ON m.member_id = a.address_member_id AND a.preferred_address = TRUE
LEFT JOIN phones p ON m.member_id = p.phone_member_id AND p.preferred_phone = TRUE
LEFT JOIN emails e ON m.member_id = e.email_member_id AND e.preferred_email = TRUE
WHERE m.member_id IN (
(SELECT address_member_id
FROM addresses
WHERE address = '123 Hart Ct' AND unit = NULL AND city = 'Hometown' AND state = 'NJ' AND zip_code = '08895'),
(SELECT phone_member_id
FROM phones
WHERE area_code = '732' AND prefix = '619' AND line_number = '7826'),
(SELECT email_member_id
FROM emails
WHERE email_address = '[email protected]')
)
AND m.first_name = 'Jane' AND m.middle_name = 'Deborah' AND m.last_name = 'Foster'
ORDER BY member_id ASC;
正如你所看到的,我在基于该表中的值“成员”表中搜索记录,以及价值观与之相关联的“首选”地址,电话,电子邮件等。
问题是上面的查询需要提供所有这些值。在大多数情况下,用户只会提供少数实际值来执行搜索。
现在,我知道一个选择是在我的应用程序层中动态构建查询,并将字符串连接在一起,而不是什么。这样,WHERE子句将只具有该特定查询所需的值。但在我这样做之前,我想知道是否有任何方法可以以纯SQL方式完成此任务?
我使用MYSQL btw。谢谢。
如果您通过hibernate或其他框架调用查询 - 您有基于v添加条件的约束选项Alue通过。如果你直接从你的应用程序连接到数据库,那么我知道的方法是手动追加你的查询字符串! – Pat