【问题标题】:Mysql return result if no result in table 2如果表2中没有结果,Mysql返回结果
【发布时间】:2013-01-05 16:27:54
【问题描述】:

假设我有这条 sql 行:

SELECT (something) 
FROM user_data, user_profile_image 
WHERE user_data.user_id='6' (AND user_profile_image.user_id='6')

如果 user_profile_image 中没有包含与该用户相关的数据,我如何确保它从 user_data 字段返回信息?

【问题讨论】:

    标签: php mysql null return


    【解决方案1】:

    你需要使用JOIN

    SELECT u.*,i.user_profile_image FROM user_data u LEFT JOIN `USER_PROFILE_IMAGE_TABLE` i ON i.user_id=u.user_id WHERE u.user_id='6'
    

    我不确定您的 USER_PROFILE_IMAGE_TABLE 是什么,因此您需要更改它。

    【讨论】:

    • 嗯...看来我不起作用。这是完整的代码: SELECT (something) FROM users LEFT JOIN profile_images ON users.user_id=profile_images.user_id WHERE profile_images.user_id = '". $uid ."' AND users.user_id = '".$uid ."' LIMIT 1
    【解决方案2】:
    SELECT something
    FROM user_data
    LEFT JOIN user_profile_image
    ON user_profile_image.user_id = user_data.user_id
    WHERE user_data.user_id = '6'
    AND user_profile_image.user_id IS NULL;
    

    你想LEFT JOIN详情页的外键字段等于第一个表的主键字段,并从第一个表中选择行,使得第二个表中没有匹配的行。

    在您提供的查询中,没有连接条件,因此它将是笛卡尔积 - user_data 的每一行与 user_profile_image 的每一行合并。

    【讨论】:

    • 如果我将 IS null 设置为 = '6'(用户 id 6 没有个人资料图像)然后 Sql 什么也不返回。如果我使用 user_id 4(有图像的用户)sql 返回行:/
    • 什么是外键字段?使用什么键将user_profile_image 匹配到user_data
    • 暂时没有外键,有必要吗?
    • 你怎么知道哪个user_profile_image属于哪个user_data?我的意思不是外键约束,但是两个表中存在的值是什么来等同于它们?要么user_data.user_id 也出现在user_profile_image 中,要么user_profile_image 有一个也出现在user_data 中的关键字段(例如user_profile_image_id)。你能把你的模式和查询放在 sqlfiddle.com 上吗?
    【解决方案3】:

    试试这个:

    SELECT u.user_id, u.user_name, IFNULL(up.user_id, 'No Data In user_profile_image') UserId, 
           IFNULL(up.user_image_id, 'No Data In user_profile_image') user_image_id
    FROM user_data u 
    LEFT JOIN user_profile_image up ON u.user_id = up.user_id 
    WHERE u.user_id = 6;
    

    查看此链接SQL FIDDLE DEMO

    【讨论】:

      猜你喜欢
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      • 2014-06-09
      • 2017-07-07
      • 2019-07-09
      相关资源
      最近更新 更多