我不确定如何描述我的问题(因此可怕的标题),但它与this recent question有关。
如果我有一些方法可以创建一个包含4行的“表格”作为SELECT的一部分(与NOT IN或MINUS一起使用),问题就很容易解决了。
我的意思是,我可以这样做:
SELECT 1, 2, 3, 4;
并将从数据库中收到一行:
| 1 | 2 | 3 | 4 |
但有没有办法接收以下内容(不使用UNION,我真的不想要一个长列表可能有数千行的查询)?
| 1 |
| 2 |
| 3 |
| 4 |
答案 0 :(得分:1)
这种查询可以在支持递归查询的数据库中使用(postgres,oracle,db2,mssql等等)。
在mysql中,您(概念上)最简单的路径是创建临时表,然后按照建议插入您感兴趣的ID here
如果你想要更好,可以将创建临时表放在mysql stored procedure中。
答案 1 :(得分:0)
我发现将分隔常量输入拆分为表格的最佳方法是使用数字/计数表 - 有关详细信息,请参阅http://www.sqlteam.com/article/parsing-csv-values-into-multiple-rows。我以前在大型数据集上使用过这种技术,发现它非常快。