根据从其他SELECT返回的语句执行SELECT查询

时间:2017-06-08 16:43:43

标签: mysql sql

我有两张桌子:

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'

2 个答案:

答案 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条件。