我有一个表格user_quotes
,其中包含字段quotes_id
,quotes_user
,quotes_desc
,quotes_date
,quotes_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
来检索记录。
答案 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
行设置email2
或user1
。
也许你想要的是连接其他字段的值。在这种情况下,我建议将GROUP_CONCAT
汇总函数与GROUP BY quotes_user
一起使用。
我不确定你为什么要避免使用GROUP BY
。也许如果你能解释一下,我们可以提供更多帮助。
答案 1 :(得分:2)
除了已经说过的内容之外,应该强调的是,当您选择多个列时,DISTINCT
关键字不能为您提供单独列的不同结果。在您的情况下,您将获得不同的行 4列。您所观察到的是DISTINCT
的预期标准行为。
答案 2 :(得分:0)
听起来像quotes_user
应该是user_id
这样的外键,大概是你的用户表。然后,您可以user_quotes
查询user_id
,返回该用户的所有引号。然后你的前端可以很好地格式化每个用户的所有引号,它听起来不像MySql问题。