gpt4 book ai didi

mysql - 我如何在另一个表的嵌套选择中引用一个表中的列

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

我有一个关于使用嵌套选择的基本问题,嵌套选择的表名是第一个表中列的数据。这是我想要执行的操作以及我尝试但不起作用的查询的示例。

在这个例子中,我想要一个查询来告诉我哪些宠物有几天没有喂食

table pets

name type feed_schedule
-----------------------
joe dog sched_1
sam cat sched_2
...

table sched_1

day feed
---------
sun yes
mon no
tues yes
wed yes
thur no
fri yes
sat yes




table sched_2
day feed
---------
sun yes
mon yes
tues yes
wed no
thur no
fri yes
sat yes


SELECT * from pets WHERE (SELECT * FROM pets.feed_schedule WHERE
(feed = 'yes')
)

此查询提示我无权访问表“feed_schedule”我怎样才能做到这一点?谢谢!

最佳答案

您当前的架构要求使用动态生成的表名。可以使用客户端代码或存储过程使其工作,但总是需要两个步骤:首先,查询 pets 表以获取包含时间表的表名,第二步是查询选定的时间表 table 。换句话说,相当困惑。

相反,我会建议更改您的架构以使用单个表时间表来保存所有时间表,如下所示:

CREATE TABLE schedules (
schedule_id INT NOT NULL,
feed_day VARCHAR(4),
feed VARCHAR(3)
)

您现有的所有计划都将保存到此表中。此外,每只宠物都应该保存整数 schedule_id。

现在,您可以使用简单连接来获取结果,如下所示:

SELECT p.name
FROM pets p, schedules s
WHERE p.schedule_id = s.schedule_id
AND s.feed = 'yes'

关于mysql - 我如何在另一个表的嵌套选择中引用一个表中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13338680/

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