SQL查询求助:需返回全部数据而非仅现有数据,请求优化查询语句
调整SQL查询以返回全部数据
你的当前查询语句因为包含了两个过滤条件——u.id= '22'(限定特定用户)和day = '2017-12-20'(限定特定日期),所以只返回了符合这两个条件的部分数据。要获取全部关联数据,可以根据你的实际需求调整过滤条件:
情况1:保留日期过滤,去掉用户ID限制
如果想要获取2017-12-20当天所有用户的设备数据,移除u.id= '22'条件即可:
SELECT u.id, device_id, profit FROM device d JOIN user u ON d.user_id = u.id WHERE day = '2017-12-20'
情况2:保留用户过滤,去掉日期限制
如果想要获取用户22的所有日期的设备数据,移除day = '2017-12-20'条件即可:
SELECT u.id, device_id, profit FROM device d JOIN user u ON d.user_id = u.id WHERE u.id= '22'
情况3:移除所有过滤条件,返回全部关联数据
如果想要获取所有用户、所有日期的设备关联数据,直接去掉整个WHERE子句:
SELECT u.id, device_id, profit FROM device d JOIN user u ON d.user_id = u.id
额外补充:如果你的device表中存在未关联用户(user_id为NULL或在user表中无匹配)的设备数据,且你也想包含这部分数据,可以把JOIN替换为LEFT JOIN:
SELECT u.id, device_id, profit FROM device d LEFT JOIN user u ON d.user_id = u.id -- 可根据需求添加对应的WHERE条件
内容的提问来源于stack exchange,提问作者peaceduck
相关产品推荐
相关产品推荐

