gpt4 book ai didi

mysql - 在对多个表进行操作的sql语句中使用Or

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

问题:

我有 2 个表,我从一个名为 Table_Booked 的表中选择数据,其中包含一条记录,其中包含用户每次预订时的用户名和 SessionID,另一个名为 Table_Sessions 的表包含 session 详细信息,例如 SessionId、Subject、TeacherID、Day、 Am_Pm 和 WhatYear。

我尝试从 Table_Booked 中选择用户名与当前用户相同的所有记录,并且我还想获​​取用户预订的每个 session 的 Day & Am_Pm 数据或他的 session 记录正在尝试预订。目的是比较记录,如果在同一时间段内发生任何记录,则不允许用户预订 session 。

代码:

Select Table_Session.Day,Table_Session.Am_Pm,Table_Session.SessionId
From Table_Session,Table_Booked
Where Table_Booked.Username = 'G9rpenman' and
((Table_Booked.SessionID = Table_Session.SessionId) Or (Table_Session.SessionId = 9))

当我运行此代码时,它会两次从 Table_Session.SessionId = 9 获取信息,其他调整也导致了类似的随机数据选择。我找不到任何关于此的信息。感谢您的帮助。如果您觉得我错过了任何重要信息,请告诉我,我将对此进行编辑。

这是我的表格的一些屏幕截图,其中包含我使用 http://imgur.com/a/9fZtW 的数据

最佳答案

简单规则:永远不要FROM子句中使用逗号。 始终使用显式JOIN语法。

重复的原因是OR。我认为这会做你想要的:

Select s.Day, s.Am_Pm, s.SessionId
From Table_Booked b join
Table_Session s
on s.SessionID = b.SessionId or s.SessionId = 9
Where b.Username = 'G9rpenman' ;

如果没有,您可能需要union:

Select s.Day, s.Am_Pm, s.SessionId
From Table_Booked b join
Table_Session s
on s.SessionID = b.SessionId
Where b.Username = 'G9rpenman'
union
Select s.Day, s.Am_Pm, s.SessionId
from Table_Session s
where s.SessionId = 9;

关于mysql - 在对多个表进行操作的sql语句中使用Or,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36102357/

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