gpt4 book ai didi

mysql - 重写选择查询

转载 作者:行者123 更新时间:2023-11-29 12:56:21 24 4
gpt4 key购买 nike

我手头有一个相当简单的(我认为)问题。下面提供了我需要的示例表和结果(实际上这些表包含更多的列和数据,我开玩笑地留下了相关的内容)。还有一个查询可以准确返回我需要的内容。但是,我不喜欢它的工作方式相当粗糙(我一般不喜欢子查询)。问题是,如何重写查询,以便它能够自动对将来出现在 TABLE2 中的更多列使用react?现在,如果将“z”列添加到 TABLE2,我需要修改代码中的每个查询并添加一个更多相关的子查询。我只希望 select 读取 TABLE2 的全部内容并将 id 数字转换为 TABLE1 中的相应字符串。

表1

-----------------
id |x |
-----------------
567 |AAA |
345 |BBB |
341 |CCC |
827 |DDD |
632 |EEE |
503 |FFF |
945 |GGG |
234 |HHH |
764 |III |
123 |JJJ |
-----------------

表2

-------------------------
id |x |y |
-------------------------
1 |123 |341 |
2 |567 |632 |
3 |345 |945 |
4 |764 |503 |
5 |234 |827 |
-------------------------

我需要的结果

-----------------
A |B |
-----------------
JJJ |CCC |
AAA |EEE |
BBB |GGG |
III |FFF |
HHH |DDD |
-----------------

我的查询

SELECT
(SELECT `x` FROM `TABLE1` WHERE `TABLE2`.`x` LIKE `TABLE1`.`id` LIMIT 1) as A,
(SELECT `x` FROM `TABLE1` WHERE `TABLE2`.`y` LIKE `TABLE1`.`id` LIMIT 1) as B
FROM `TABLE2` ORDER BY `id` DESC;

最佳答案

您可能想要重组您的数据模型:

而不是:

-------------------------
id |x |y |
-------------------------
1 |123 |341 |
2 |567 |632 |
3 |345 |945 |
4 |764 |503 |
5 |234 |827 |
-------------------------

你会:

----------------------
col_id |col |
----------------------
1 |x |
2 |y |
----------------------

---------------------------
id |col_id |col_val |
---------------------------
1 |1 |123 |
1 |2 |341 |
2 |1 |567 |
2 |2 |632 |
etc
---------------------------

可能不值得这么麻烦(当您一次访问多个列时,您实际上需要进行透视),但它允许您在所有当前和 future 的列中执行您想要的查询。

关于mysql - 重写选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24004024/

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