mysql - 如果没有结果,MySQL 将返回 NULL
问题描述
我有这种类型的查询
SELECT one, two, three FROM (
( SELECT data AS one FROM thetable WHERE `id` = '$id' AND name = 'one') t1,
( SELECT data AS two FROM thetable WHERE `id` = '$id' AND name = 'two') t2,
( SELECT data AS three FROM thetable WHERE `id` = '$id' AND name = 'three') t3
)
并且当某一行缺少某一行时id
,它只会跳过与id
.
我希望得到这样的东西:
id:24 one:somedata two:somedata three:somedata
id:25 one:somedata two:EMPTY three:somedata
id:26 one:somedata two:somedata three:somedata
id:27 one:EMPTY two:somedata three:somedata
但我得到:
id:24 one:somedata two:somedata three:somedata
id:25 one:EMPTY two:EMPTY three:EMPTY
id:26 one:somedata two:somedata three:somedata
id:27 one:EMPTY two:EMPTY three:EMPTY
为什么?
解决方案
你可以试试下面的方法——
select id,
max(case when name = 'one' then data end) as one,
max(case when name = 'two' then data end) as two,
max(case when name = 'three' then data end) as three
from thetable where `id` = '$id'
group by id
推荐阅读
- html - 如何在选择选项中添加字体真棒图标?
- reactjs - 如何在反应打字稿中使用 getInitialProps 和 NextPageContext 在参数中声明两个“res”?
- mysql - 如何获取两个表连接数据排除mysql中一个表的一些条件数据?
- python - 如何在 Python 中为具有随机长度和字符顺序的字符串创建搜索词?
- performance - Scrapy web 抓取:如何消除解析作为瓶颈
- javascript - eventListener 总是在第一个元素上触发
- android - findFirstVisibleItemPosition() 总是返回 -1
- delphi - 如何使 GLPlane 始终具有前置摄像头方向(Delphi,GLScene)
- reactjs - 在反应中导入的 js-yaml 未按预期运行
- html - 如何确定大滚动条的宽度?