gpt4 book ai didi

MySql 显示不在第二个表中的值

转载 作者:行者123 更新时间:2023-11-29 04:45:07 24 4
gpt4 key购买 nike

我正在尝试向已预订一项事件的人提供其他事件的门票。我有两张 table

---Concerts----------------
| ConcertID | Concert |
---------------------------
| 101 | Mozart |
| 102 | Beethoven |
| 103 | Chopin |
---------------------------

---Tickets--------------------------------------------
| TicketNum | Name | email | ConcertID |
------------------------------------------------------
| 5001 | Amy Jones | aaa@aaa.com | 101 |
| 5002 | Amy Jones | aaa@aaa.com | 102 |
| 5003 | John Doe | bbb@bbb.com | 102 |
| 5004 | Adam Smith | ccc@ccc.com | 101 |
| 5005 | Jerry Coe | ddd@ddd.com | 102 |
------------------------------------------------------

我正在尝试构造一个像这样的语句

SELECT Tickets.email, Concerts.ConcertID, Concerts.Concert FROM Tickets, Concerts 
WHERE (Show Concerts Not Booked)
AND Concerts.ConcertID = Tickets.ConcertID
AND email = "bbb.com"

此节目然后返回 John Doe 未预订的两场音乐会,即 101 Mozart 和 102 Chopin。

这是我正在努力解决的(显示音乐会未预订)

我可以构造一个查询来显示他预订了哪些音乐会的交集,但我无法显示他没有预订的音乐会。

非常感谢任何帮助。

最佳答案

Select c.ConcertID, C.Concert
From Concerts c
Left join Tickets t On t.ConcertID = c.ConcertID
Where t.ConcertID is null and t.Name = 'John Doe'

会那样做。

没有别名可能会使发生的事情更清楚

Select Concerts.ConcertID, Concerts.Concert
From Concerts
Left join Tickets On Tickets.ConcertID = Concerts.ConcertID
Where Tickets.ConcertID is null and Tickets.Name = 'John Doe'

这样想,如果您想要所有音乐会的列表以及约翰是否买了票你会做

Select *
From Concerts
Left join Tickets On Tickets.ConcertID = Concerts.ConcertID
Where Tickets.Name = 'John Doe'

得到

101 Mozart    NULL  NULL    NULL        NULL 
102 Beethoven 5003 John Doe bbb@bbb.com 102
103 Chopin NULL NULL NULL NULL

因此 where 语句中的额外条件会过滤掉不存在票证的行。

好吧,这很烦人,在玩了@JungSu Heo 的 sql fiddle 之后,我发现它有效

Select *
From Concerts c
Left join Tickets t On t.ConcertID = c.ConcertID and t.Name = 'John Doe'
Where t.ConcertID is null

经过一番思考后是有道理的,因为 John Doe 在 where 子句中空值被切掉了。在 join 子句中做,然后 John Doe 只用来约束外连接。

谢谢你学到了一些东西,虽然我通常不会看到这样的东西,因为我有一个 names/bookers 类型的表。

关于MySql 显示不在第二个表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20299308/

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