是否可以动态使用MySQL来实现以下内容:
SELECT DISTINCT x FROM ('aaa', 'bbb', 'aaa', 'ccc') x;
其中,部分'aaa', 'bbb', 'aaa', 'ccc'
表示以逗号分隔的1000000值列表(不是表名,而不是列名)(对不起混淆)。
预期产出:
x
------
aaa
bbb
ccc
为什么不使用命令行工具?
我喜欢MySQL的语法,如何操作数据,GROUPING,SORTING,...... MySQL是处理数据集的最佳和最简单的方法。
再次:
列表定义为:
'aaaa',
'bbbbb',
'aabb',
'ffff',
'dfdff',
'aabb',
'ddsss'
[+ 1000 of those lines]
现在我想复制并粘贴此列表并对其执行MySQL操作。例如:
SELECT DISTINCT [paste list here];
或者:
SELECT * FROM [此处粘贴列表] WHERE值LIKE'aaa%'
答案 0 :(得分:7)
你在找这样的东西吗?
SELECT DISTINCT a.x
FROM
(SELECT 'aaa' AS x
UNION ALL
SELECT 'bbb'
UNION ALL
SELECT 'aaa'
UNION ALL
SELECT 'ccc') a
会导致
| X | |-----| | aaa | | bbb | | ccc |
如果您有许多值,则应将它们加载到临时表中并在临时表上运行DISTINCT
。
CREATE TEMPORARY TABLE [IF NOT EXISTS] listOfValues (
value varchar(10)
);
INSERT INTO listOfValues (value)
('aaa'),
('bbb'),
('aaa'),
('ccc');
SELECT DISTINCT value FROM listOfValues;
答案 1 :(得分:6)
根据您更新的问题,您可以创建一个临时表,使用LOAD DATA INFILE
(还有command line选项),最后在行上运行DISTINCT
。没有办法" copy&粘贴" 它,除非你想把它放在一个blob或长文本中,并编写一个超出MySQL设计范围的解析器。
答案 2 :(得分:0)
SELECT 'aaa'
UNION
SELECT 'bbb'
UNION
SELECT 'aaa'
UNION
SELECT 'ccc'
会工作
Union将删除重复项,Union all保留重复项 想要使用如此多的价值观,可以看看这里
remove dups from many csv files
除非有某种原因它实际上需要在SQL中解决