php - 加入同一张表,忽略空值
问题描述
我有一张这样的桌子
id userid game date_t hdigit inside outside
1 user101 xy 02-09-2017 1 10
2 user101 xy 02-09-2017 1 40
3 user101 xx 02-09-2017 2 40
4 user101 xx 02-09-2017 3 90
我想要显示数据
id userid game date_t hdigit inside outside
1 user101 xy 02-09-2017 1 10 40
3 user101 xx 02-09-2017 2 40
4 user101 xx 02-09-2017 3 90
我试过这个
SELECT h.userid,h.game,h.date_t,h.hdigit,h.inside,htwo.outside
FROM `hadap_game` AS h JOIN hadap_game AS htwo WHERE h.userid=:user
AND htwo.userid=:uer AND h.hdigit=htwo.hdigit AND h.game=htwo.game
AND h.inside IS NOT NULL AND htwo.outside IS NOT NULL
它正在打印上面的东西,但我也想打印具有空值的行
解决方案
我认为您可能只需使用GROUP BY
?
SELECT
h.userid,
h.game,
h.date_t,
h.hdigit,
MAX(IFNULL(h.inside, htwo.inside)) AS inside,
MAX(IFNULL(h.outside, htwo.outside)) AS outside
FROM
hadap_game AS h
LEFT JOIN hadap_game AS htwo ON htwo.userid = h.userid AND htwo.hdigit = h.hdigit AND htwo.game = h.game AND htwo.id <> h.id
WHERE
h.userid = :user
GROUP BY
h.userid,
h.game,
h.date_t,
h.hdigit;
这做了一些您可能不需要/不想要的其他事情,但它与您的原始查询基本相同,除了它在每个唯一引用没有两行时起作用。
推荐阅读
- c# - 我需要用选定的列过滤我的 DataGridView
- jenkins - 在测试管道代码时验证 Jenkins 调用
- javascript - 如何使用提交类型验证选择方法?
- typescript - React 组件库和 css 模块
- android - 如何从闹钟提供者 ACTION_SET_ALARM 意图获取深层链接 URI 以与 ACTION_DISMISS_ALARM 一起使用?
- asp.net-mvc - 无法上传大文件 ASP.NET / IIS 6.2
- android - 如何在我的 Android 应用程序中显示应用程序覆盖屏幕?
- amazon-web-services - 删除 S3 对象时“拒绝访问”
- ios - Firebase Phone Auth reCAPTCHA 验证在某些设备上不起作用
- python - 指定时间评估是否会覆盖 RK45 方法的时间步选择?(scipy.integrate.solve_ivp)