gpt4 book ai didi

SQL:一对多,只选择一个

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

我正在编写一个小工具来管理注册到协会的人员。

我有一个表 USERS 和一个表 CARDS。每个用户可以拥有多张卡(因为卡会过期)。

通过一次查询,我想提取所有用户信息以及最新卡的所有卡信息(字段:ISSUEDATE)。

这是一个非常基本的例子:

用户表

IDUSER  NAME    SURNAME
------------------------
1 Robert Hill

CARDS 表

IDCARD  IDOWNER  ISSUEDATE   DESC 
----------------------------------------
1 1 2010-01-01 'CARD ONE'
2 1 2010-08-18 'CARD TWO'

基本上我想从我的查询中返回这些字段:

IDUSER  NAME     SURNAME  IDCARD  IDOWNER  ISSUEDATE   DESC
---------------------------------------------------------------
1 Robert Hill 2 1 2010-08-18 'CARD TWO'

我试过了,但我做不到:(

编辑:如果没有卡链接到用户会怎样? (一个用户注册了,但协会还没有给他/她任何卡)。有什么方法可以修改此查询以获取用户信息吗?这个想法是为每个用户获取所有可能的信息。此信息稍后通过 JSON 用于广告 ExtJS 应用程序。

感谢您的回答。

最佳答案

带有 NOT EXISTS 查询的选项 1:

select u.IDUSER, u.NAME, u.SURNAME,
c.IDCARD, c.IDOWNER, c.ISSUEDATE, c.DESC
from USERS u
join CARDS c on u.IDUSER = c.IDOWNER
where not exists (select 1 from CARDS where IDOWDER = u.IDUSER and ISSUEDATE > c.ISSUEDATE)

带有 LIMIT 的选项 2

select u.IDUSER, u.NAME, u.SURNAME,
c.IDCARD, c.IDOWNER, c.ISSUEDATE, c.DESC
from USERS u
join CARDS c on u.IDUSER = c.IDOWNER
order by c.ISSUEDATE desc
LIMIT 1

关于SQL:一对多,只选择一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3525862/

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