不同的MySQL查询返回所有记录

时间:2009-10-24 06:14:52

标签: mysql distinct

我有一个表格user_quotes,其中包含字段quotes_idquotes_userquotes_descquotes_datequotes_status和{{ 1}}。在此quotes_location允许复制条目。当我执行我的查询时,我试图避免quotes_user的重复条目。所以我执行了这样的查询,

quotes_user

此查询仅返回select distinct quotes_user from user_quotes; 字段。如何使用quotes_user检索所有其他记录。

我尝试了以下这些,

distinct quotes_user

这并不是避免重复quotes_user。

如果我使用,

select distinct quotes_user, quotes_desc, quotes_date, quotes_status from user_quotes;

我收到mysql错误,

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'* FROM select distinct quotes_user, * from user_quotes; 附近使用正确的语法。

如何使用同一个表中的单个列的select distinct来获取所有记录?我在该字段中存储电子邮件地址。数据类型为user_quotes

注意:请不要向我建议其他类型,如group by或other。我需要知道如何仅使用varchar来检索记录。

3 个答案:

答案 0 :(得分:2)

您说您想要检索其他字段,但您尚未指定 SQL如何知道要为其他字段检索哪些值,对于每个字段价值quotes_user

为了表明你想要我的意思,请考虑这个例子:

+-------------+---------------+
| quotes_user | email_address |
+-------------+---------------+
| user1       | email1        |
| user1       | email2        |
| user2       | email3        |
| user2       | email4        |
| user2       | email5        |
| user3       | email6        |
+-------------+---------------+

现在,如果想要quotes_user,输出显然会是:

+-------------+
| quotes_user |
+-------------+
| user1       |
| user2       |
| user3       |
+-------------+

但是,如果您还想要其他字段,则需要决定是否为email1行设置email2user1

也许你想要的是连接其他字段的值。在这种情况下,我建议将GROUP_CONCAT汇总函数与GROUP BY quotes_user一起使用。

我不确定你为什么要避免使用GROUP BY。也许如果你能解释一下,我们可以提供更多帮助。

答案 1 :(得分:2)

除了已经说过的内容之外,应该强调的是,当您选择多个列时,DISTINCT关键字不能为您提供单独列的不同结果。在您的情况下,您将获得不同的 4列。您所观察到的是DISTINCT的预期标准行为。

答案 2 :(得分:0)

听起来像quotes_user应该是user_id这样的外键,大概是你的用户表。然后,您可以user_quotes查询user_id,返回该用户的所有引号。然后你的前端可以很好地格式化每个用户的所有引号,它听起来不像MySql问题。