动态使用MySQL,无需表

-5 mysql

是否可以动态使用MySQL来实现以下内容:

SELECT DISTINCT x FROM ('aaa', 'bbb', 'aaa', 'ccc') x;
Run Code Online (Sandbox Code Playgroud)

其中部分'aaa', 'bbb', 'aaa', 'ccc' 表示逗号分隔的1000000值列表(不是表名,不是列名)(抱歉混淆).

所以我所能做的就是复制并粘贴这个以逗号分隔的列表.

我无法围绕所有值包装UNION.

预期产量:

x
------
aaa
bbb
ccc
Run Code Online (Sandbox Code Playgroud)

为什么不使用命令行工具?

我喜欢MySQL的语法,如何操作数据,GROUPING,SORTING,...... MySQL是处理数据集的最佳和最简单的方法.

再次:

列表定义为:

'aaaa',
'bbbbb',
'aabb',
'ffff',
'dfdff',
'aabb',
'ddsss'
[+ 1000 of those lines]
Run Code Online (Sandbox Code Playgroud)

现在我想复制并粘贴此列表并对其执行MySQL操作.例:

SELECT DISTINCT [paste list here];
Run Code Online (Sandbox Code Playgroud)

要么:

SELECT*FROM [此处粘贴列表] WHERE值LIKE'aaa%'

Ker*_*mit 7

你在找这样的东西吗?

SELECT DISTINCT a.x 
FROM 
(SELECT 'aaa' AS x
UNION ALL
SELECT 'bbb'
UNION ALL
SELECT 'aaa'
UNION ALL
SELECT 'ccc') a
Run Code Online (Sandbox Code Playgroud)

会导致

|   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;
Run Code Online (Sandbox Code Playgroud)


Ker*_*mit 6

根据您更新的问题,您可以创建一个临时表,使用LOAD DATA INFILE(还有一个命令行选项),最后DISTINCT在行上运行.没有办法"复制和粘贴"它,除非你想把它放在blob或长文本中并编写一个超出MySQL设计范围的解析器.