gpt4 book ai didi

php mysql 根据另一个表中的冒号值从表中选择一组列

转载 作者:行者123 更新时间:2023-11-29 00:00:57 25 4
gpt4 key购买 nike

我有两张 table 。表 1:

deviceID    | PartA-present | PartB-present
------------+---------------+---------------
123 | 0 | 1
254 | 1 | 0
152 | 1 | 1

Table 2:
deviceID | PartA-Data | PartB-Data
------------+---------------+---------------
123 | 0 | 13
152 | 4 | 25
123 | 0 | 67
152 | 38 | 32

现在,partA、partB 等的存在是基于用户设置的动态的。我如何才能形成查询以仅导出表 2 中存在部件的那些列(如表 1 中所示)?

在这种情况下,对于 deviceID=123,我只需要从表 2 中导出 partB-Data

编辑

根据我得到的答案,我想我应该澄清一下。我对 JOIN 有一些想法,但我不知道如何获得以下结果。

期望的结果(对于 deviceID123):

deviceID    | PartB-Data    | 
------------+---------------+
123 | 13 |
123 | 67 |

期望的结果(对于 deviceID 152):

 deviceID   | PartA-Data    | PartB-Data
------------+---------------+---------------
152 | 4 | 25
152 | 38 | 32

更新

我一直在寻找的是根据查询在输出中获得不同数量的列,但感谢@Alex,我意识到这是不可能的。从这个意义上说,我可以简单地为 deviceID=xxx bcz 导出表 2,无论如何非相关数据都是 0。

最佳答案

您的目标不明确。但作为起点,试试这个 fiddle

http://sqlfiddle.com/#!9/0bb4d/1

SELECT t1.*, t2.*
FROM table1 t1
INNER JOIN table2 t2
ON t1.deviceid = t2.deviceid
WHERE t1.deviceID = 123
AND (t1.partA OR t2.partB)

EDIT 1 这不是关于你的 table1 字段,而是关于逻辑

检查这个 fiddle : http://sqlfiddle.com/#!9/a7984/5

和这个查询

SELECT t1.deviceid,
IF(t1.partA=1, t2.partA, IF(t1.partB=1,t2.partB,null))
FROM table1 t1
INNER JOIN table2 t2
ON t1.deviceid = t2.deviceid
WHERE t1.deviceID = 123
AND (t1.partA OR t2.partB);

即使它为 deviceid=123 带来了预期的结果,它仍然适用于 deviceid=152 吗?

EDIT 2 希望我能正确实现您的目标。检查新 fiddle :http://sqlfiddle.com/#!9/a7984/7

SELECT t1.deviceID,
IF(t1.partA=1, t2.partA, null),
IF(t1.partB=1, t2.partB, null)
FROM table1 t1
INNER JOIN table2 t2
ON t1.deviceid = t2.deviceid
WHERE t1.deviceID = 123
AND (t1.partA OR t2.partB);

关于php mysql 根据另一个表中的冒号值从表中选择一组列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29883503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com