gpt4 book ai didi

sql连接问题

转载 作者:行者123 更新时间:2023-12-01 00:03:12 26 4
gpt4 key购买 nike

我有两个表,拍卖和用户。

我想从 auctions 中选择 username 表,其中 category=x,然后从 users 表中选择字段 a、b 和 c,其中 users 中的用户名字段与 auctions 中的用户名字段匹配。

我正在尝试:

SELECT AUCTIONS.USERNAME, USERS.firstname, USERS.lastname, USERS.flaggedauctions
FROM AUCTIONS
INNER JOIN USERS
ON AUCTIONS.USERNAME=USERS.USERNAME

这似乎有效。然而,USERNAME 在这两个表中都不是主键,并且在 auctions 表中可以有许多具有相同用户名的记录,而在 users 表中每个用户名只有一个记录。

上面的查询有效,但是如果我想将结果集限制为 10 以进行分页,就会出现问题。这可能会导致返回 10 条记录,其中一些是重复的。有没有一种方法可以在另一个查询中运行一个限制为每个姓氏 1 条记录的查询?

编辑:回答 Quassnoi 的帖子

用户名始终是唯一的

如果我有

Auctions:
username category blah
-------------------------------------
user1 category1 tshirt
user2 category2 jeans
user3 category3 shoes
user2 category3 belt
user3 category3 pants

Users:
username firstname lastname
-------------------------------------
user1 john smith
user2 fred black
user3 alice brady

Then given category 3 as the category, I would want to show:

username firstname lastname
-------------------------------------
user2 fred black
user3 alice brady

With username coming from the auctions table.

Instead, at the moment this will display:

username firstname lastname
-------------------------------------
user2 fred black
user3 alice brady
user3 alice brady

编辑2:

我正在使用

SELECT username, firstname, lastname
FROM USERS
WHERE username
IN (

SELECT USERNAME
FROM AUCTIONS
WHERE category = 'fake'
)
LIMIT 0 , 30

返回 0 个结果。 AUCTIONS中肯定有很多记录类别设置为假的。

最佳答案

我建议使用 SELECT DISTINCT,但我宁愿问你这个问题:

给定表格:

AUCTION     USERNAME
-------- -------
Sotheby's john
Christie's john

USERNAME FIRSTNAME LASTNAME
-------- -------- --------
john John Doe
john John Davis

苏富比佳士得您想选什么?

除非您回答这个问题,否则无法理解您所说的“一种将查询限制为每个用户名 1 条记录的方式”是什么意思。

更新:

SELECT  *
FROM users
WHERE username IN
(
SELECT username
FROM auctions
WHERE category = 'category3'
)

更新 2:

这个查询有返回值吗?

SELECT  u.username, u.firstname, u.lastname
FROM auctions a, users u
WHERE a.category = 'fake'
AND u.username = a.username

更新 3:

SELECT  ao.username, u.firstname, u.lastname
FROM (
SELECT DISTINCT username
FROM auctions a
WHERE category = 'fake'
) ao
LEFT JOIN
users u
ON u.username = a.username

关于sql连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/733581/

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