gpt4 book ai didi

mysql - 如何在另一个 SQL 查询中使用 SQL 查询的结果

转载 作者:行者123 更新时间:2023-11-29 06:38:08 24 4
gpt4 key购买 nike

我正在使用 MySQL 在 vb.net 中编写票务程序。

我想要的是使用我从查询 1 中获得的票证可以具有的状态名称(打开/关闭/保留/等),并在查询 2 中使用它来获取列表所有状态名称,第一个查询的结果作为第一项。

我现在连续使用 2 个查询,但我确信它可以在 1 个查询中完成。

查询1:

SELECT StateName 
FROM Tickets t
JOIN States s
ON s.stateID = t.StateID
WHERE TicketNumber = & *intTicketNumber*

--> 结果 =“打开”

查询2:

SELECT StateName 
from States
ORDER
BY(case when StateName = '" & *StrStateName* & "' then 0 else 1 end)
, StateName desc

组合查询的期望结果应该是:

  1. 打开
  2. 已分配
  3. 关闭
  4. 暂停

如何组合这两个查询?任何帮助将不胜感激!

最佳答案

  • 您可以将 States 作为最左边的表,并在 stateIDTicketNumber 上对 Tickets 表执行 LEFT JOIN 。匹配连接条件中的 TicketNumber,而不是 Where
  • States 设置为最左边的表将确保考虑所有 StateName 值。
  • 对于特定的 TicketNumber,t.StateId 将为 NULL(LEFT JOINing 后),但一个 StateName(当前分配给 Ticket 的 StateName)除外。
  • 您可以简单地按 t.StateId 降序对它们进行排序。票证当前的 StateName 将首先出现在列表中,其余部分随后排序。

尝试使用左连接:

SELECT s.StateName 
FROM States AS s
LEFT JOIN Tickets AS t
ON s.stateID = t.StateID AND
t.TicketNumber = $intTicketNumber -- $intTicketNumber is the input variable
ORDER BY t.StateID DESC,
s.StateName DESC

关于mysql - 如何在另一个 SQL 查询中使用 SQL 查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52879725/

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