gpt4 book ai didi

mysql - 如何从连接表的多个 ID 中选择最低的 ID

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

我在创建查询时遇到了一些小问题。我有两个表:

user_data
+----+---------+--------+
| id | mail | etc... |
+----+---------+--------+
| 1 | 1@m.com | ... |
| 2 | 2@m.com | ... |
| 3 | 3@m.com | ... |
+----+---------+--------+

contracts
+----+---------+--------+
| id | user_id | etc... |
+----+---------+--------+
| 1 | 1 | ... |
| 2 | 2 | ... |
| 3 | 1 | ... |
| 4 | 1 | ... |
| 5 | 3 | ... |
+----+---------+--------+

如您所见,第一个表包含有关用户的数据,第二个表包含有关他们的契约(Contract)的数据。关于一个用户总是只有一个条目,但是一个用户可以有多个契约(Contract)。现在我需要找出答案所有用户,他们的第一个契约(Contract) ID (契约(Contract)表中的最低 ID) 和他们的电子邮件,如果它在 were 参数中。

到目前为止我有这样的查询:

SELECT
u.id as user_id,
c.id as first_contract_id,
u.mail as email
FROM
user_data u
JOIN
contracts c ON u.id = c.user_id
WHERE
u.mail
IN (
'1@me.com',
'2@me.com',
'3@me.com'
);

现在我不知道如何从这些结果中选择仅最低的契约(Contract) ID。感谢帮助。

最佳答案

SELECT
u.id as user_id,
min(c.id) as first_contract_id,
u.Mail as email
FROM
user_data u
JOIN
contracts c ON u.id = c.user_id
WHERE
u.mail IN ('1@me.com', '2@me.com', '3@me.com')
GROUP BY u.id

如果您用户分组,您可以使用min 获得最低契约(Contract)。

(而且MySQL对于选择不在一个组中的列没有问题)

关于mysql - 如何从连接表的多个 ID 中选择最低的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11688828/

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