Mysql 分别从同一个表中选择多个不同的列

Mysql 分别从同一个表中选择多个不同的列,mysql,sql,distinct,Mysql,Sql,Distinct,让我们来看看这个示例数据: +-------+---------+ | col1 | col2 | +-------+---------+ | 111 | hello | | 222 | hello | | 111 | blabla | | 444 | there | | 555 | blabla | | 555 | there | +-------+---------+ 我需要一个分别为每列返回不同值的SQL(作为筛选下拉列表值的提要)。

让我们来看看这个示例数据:

+-------+---------+
| col1  | col2    |
+-------+---------+
|  111  | hello   |
|  222  | hello   |
|  111  | blabla  |
|  444  | there   |
|  555  | blabla  |
|  555  | there   |
+-------+---------+
我需要一个分别为每列返回不同值的SQL(作为筛选下拉列表值的提要)。 因此,结果应该是:

+-------+---------+
| col1  | col2    |
+-------+---------+
|  111  | hello   |
|  222  | blabla  |
|  444  | there   |
|  555  |         |
+-------+---------+
结果不需要采用这种格式;更重要的是,我有不同的值,便于访问和迭代

我最接近的是这里:

这将返回:

+-----------------+-------------------+
| col1            | col2              |
+-----------------+-------------------+
| 111,222,444,555 | velo,hallo,blabla |
+-----------------+-------------------+
这非常接近,如果没有更好的解决方案,我会选择这个;它不是最优的,因为值是逗号分隔的,我需要分割结果

我还尝试:

SELECT DISTINCT from col1,col2 FROM testtable;
这将返回两列的distint值,而不是我想要的值

此外:

其他地方建议的方法不会返回我需要的内容,而是以不同的形式返回每一列:)

试试看

Select (SELECT DISTINCT col1 from testtable) AS col1, (SELECT DISTINCT col2 from testtable) AS col2;

我认为小组正在将逗号放入返回的表中。

您所问的一个问题是,您期望的结果集从关系数据库的角度看没有任何意义。数据行中的每一列都应该与该行中的其他列有关系

IMO,最好的方法是返回两个结果集,并为每个下拉框处理每个结果集:

SELECT DISTINCT column_1 FROM My_Table


我还要研究一下,如果两列不相关,为什么在同一个表中有这些数据。如果它们是相关的,并且您试图为一列创建一个下拉列表,然后过滤第二个下拉列表中的项目,那么您确实应该返回完整的行集,并让前端应用程序处理过滤(并显示唯一的结果)。大多数下拉窗口小部件都应该允许这种链接。

为什么不只发出两个查询,每列一个?对我来说很明显,我可以执行两个不同的查询,但为了性能,我想知道是否可以在一个查询中执行这一操作?最好的方法是执行两个查询。如果使用group_concatYes的解析结果,速度会快得多。我知道结果集中的两列,如我在问题中所描述的,实际上与标准RDMS的想法不一致。然后我将使用两个不同的查询。
Select (SELECT DISTINCT col1 from testtable) AS col1, (SELECT DISTINCT col2 from testtable) AS col2;
SELECT DISTINCT column_1 FROM My_Table
SELECT DISTINCT column_2 FROM My_Table