mysql - 如何根据来自 T1 的数据返回 T2 名称?
问题描述
T1游戏
ID IDC POWER HP LTIME
01 234 NULL NULL -1
02 235 NULL NULL -1
03 236 312 213 -1
04 237 111 111 1
05 238 331 111 4
T2英雄
ID NAME
234 TOM
235 JEK
236 MAX
237 JIZ
238 ZAK
T1 IDC = T2 的 ID
我需要用 LTIME != -1 返回所有在 POWER 或 HP 中除 null 之外的所有英雄
查询应该从 T2 返回该英雄的 ID 和 NAME。
在此示例中,查询应返回:236 MAX
我试过这个:
SELECT heroes.ID, heroes.name
FROM heroes
WHERE LTIME in ( SELECT * FROM game WHERE LTIME IS NOT NULL and POWER or HP != -1)
解决方案
您WHERE
在子查询中的条件不正确。0
不是一回事NULL
。并且POWER or HP != 0
不是您测试两列的方式。你必须写POWER IS NOT NULL AND HP IS NOT NULL
。
表中没有LTIME
列heroes
,因此您无法在主查询中对其进行测试。子查询应该返回 ID,您可以对其进行测试。但通常最好使用JOIN
而不是IN
.
SELECT h.ID, h.name
FROM heroes AS h
JOIN game AS g on h.id = g.idc
WHERE g.ltime = -1 AND g.power IS NOT NULL AND g.hp IS NOT NULL
推荐阅读
- stored-procedures - 存储过程 - 如何在 rexx 中获取数组作为输出
- java - 如何使用两个使用秘密的json在java中向谷歌进行身份验证
- flask - 使用 WebSocket 扩展 Flask REST API
- angular - Angular HttpClient 不发送域 cookie
- python - PyTorch Optimization: Is using map function on a torch.tensor without damaging computational graphs possible?
- c++ - Why must the constexpr specifier be explicitly specified for functions?
- python - 是否可以在 Python 中创建自定义 PDF 或工作表?
- c++ - 如何找出编译器生成了哪些函数?
- filepond - Filepond 上传状态在文件上传前显示“上传完成”
- django - GORM 的“有很多”关联没有创建外键?