我有两张桌子:
notifications
- email_address
- notification_email
users
- username
- domain
- notifications
我的问题是,如果我可以构建MySQL查询,它可以根据从其他SELECT返回的语句执行SELECT查询而不使用脚本(Perl,Python等)和IF ... ELSE语句?
为
以下的查询设置当前代码逻辑SELECT notifications FROM users WHERE (username LIKE 'tester') AND (domain LIKE 'my.testdomain.com')
If notifications='Y' then
SELECT notification_email FROM notifications WHERE email_address = 'tester@my.testdomain.com'
答案 0 :(得分:1)
您可以将第一个查询放在WHERE
子句中。
SELECT notification_email FROM notifications
WHERE email_address = 'tester@my.testdomain.com'
AND EXISTS (
SELECT 1
FROM users
WHERE username LIKE 'tester'
AND domain LIKE 'my.testdomain.com'
AND notifications = 'Y'
)
仅供参考,如果您没有任何通配符,LIKE
与=
相同。
答案 1 :(得分:1)
理想情况下,您应该在通知和用户表之间建立外键链接。
然后您的查询将如下所示:
if (getParent() instanceof View)
((View) getParent()).invalidate();
如果没有外键,则必须有另外一种方式将两个表链接在一起(例如电子邮件)。在这种情况下,您需要更新SELECT
notifications.notification_email
FROM
notifications
JOIN
users ON (users.id = notifications.user_id)
WHERE
users.username = 'tester'
AND
users.domain = 'my.testdomain.com'
AND
users.notifications = 'Y'
AND
notifications.email_address = 'tester@my.testdomain.com'
子句以使用包含相同数据的列将两个表连接在一起。
您可能甚至不需要ON
条件。