MYSQL - 如何选择案例(两个表,如果一个不存在,请检查另一个)

Posted

技术标签:

【中文标题】MYSQL - 如何选择案例(两个表,如果一个不存在,请检查另一个)【英文标题】:MYSQL - How to SELECT CASE (two tables, if not present in one, check the other) 【发布时间】:2012-06-22 23:49:01 【问题描述】:

我拥有的是 mysql 数据库中的两个表。

一个表包含值为"example@example.com"的字段

另一张桌子没有……

我想做的是检查两个表中是否有一个值与"example@example.com" 匹配的字段。

这是我的查询不起作用:

(#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 13)

SELECT CASE WHEN
EXISTS (
    SELECT address, suburb, city, postCode, province
    FROM user_postal
    INNER JOIN user_info ON user_postal.id = user_info.id
    WHERE user_info.emailContact = 'example@example.com'
)
OR EXISTS (
    SELECT address, suburb, city, postCode, province
    FROM user_postal
    INNER JOIN user_business_info ON user_postal.id = user_business_info.id
    WHERE user_business_info.emailContact = 'example@example.com'
)

我想返回与电子邮件example@example.com 匹配的用户ID 字段address, suburb, city, postCode, province 的值。 (这可能在两个表中的任何一个中,但肯定在一个或另一个中)

谁能告诉我我哪里出了问题?任何这方面的信息将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

这个怎么样:

SELECT address, suburb, city, postCode, province
FROM user_postal
INNER JOIN user_info ON user_postal.id = user_info.id
WHERE user_info.emailContact = 'example@example.com'

UNION

SELECT address, suburb, city, postCode, province
FROM user_postal
INNER JOIN user_business_info ON user_postal.id = user_business_info.id
WHERE user_business_info.emailContact = 'example@example.com'

【讨论】:

【参考方案2】:

这是您要使用UNION 的地方。

【讨论】:

感谢您的意见,您能解释一下为什么我的工会在这种情况下会更好吗?我已经根据是否存在匹配来调整查询,选择 1 或 0 的情况...但是在这种情况下为什么要联合?【参考方案3】:
SELECT address, suburb, city, postCode, province 
FROM user_postal
        INNER JOIN user_business_info ON (user_postal.id = user_business_info.id AND user_info.emailContact = 'example@example.com')
                                        OR (user_postal.id = user_info.id AND user_business_info.emailContact = 'example@example.com')

【讨论】:

以上是关于MYSQL - 如何选择案例(两个表,如果一个不存在,请检查另一个)的主要内容,如果未能解决你的问题,请参考以下文章

如何选择表名为Variable的MySQL

MySQL学习笔记-多表查询(上)

即使不是一个表中的所有行在另一个表中都有核心响应者,如何从 MySQL 中的两个表中进行选择?

mysql force index 优化案例

在mysql中,如果表存在,如何避免选择

mysql - 如果不在另一个表中,则从一个表中选择,否则从另一个表中选择