MySQL - 对 SELECT 结果进行 UNION

标签 mysql select union

我的表中有很多行,我准备 test_result_table:

SELECT * FROM 
(
  SELECT ID, DATA
  FROM table
  WHERE DATA = "A" OR DATA = "B" OR DATA = "C"
) AS test_result_table

我该如何做到这一点:

SELECT * FROM
    (
        SELECT 1 AS RESULT, ID 
        FROM test_result_table
        WHERE DATA = "A"
      UNION  
        SELECT 2 AS RESULT, ID 
        FROM test_result_table
        WHERE DATA = "B"
      UNION
        SELECT 3 AS RESULT, ID 
        FROM test_result_table
        WHERE DATA = "C"
    ) AS result_id
ORDER BY RESULT

我知道与临时表有关,有更好(更快)的解决方案吗?

我期望(x =某个ID):

RESULT |ID
1      |x
1      |x 
2      |x
2      |x
3      |x

最佳答案

使用函数 FIND_IN_SET() 可以获得相同的结果这将返回列的值RESULT:

SELECT t.*
FROM (
  SELECT 
    FIND_IN_SET(DATA, 'A,B,C') AS RESULT, 
    ID
  FROM tablename
) t
WHERE t.RESULT > 0
ORDER BY t.RESULT

查看简化版 demo .
我无法判断它的效率,但它肯定更简单。

关于MySQL - 对 SELECT 结果进行 UNION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58613377/

相关文章:

mysql - 在powershell中运行cmd,然后返回powershell进行清理

javascript - 在使用 get() 检索选择后使用 jQuery 确定所选选项

mysql - 选择具有最大 id 值的表行

mysql - UNION SELECT 不显示所有列

mysql - 如何通过组合 3 个不同表的数据获得如下输出

javascript - AJAX 请求,3 个有效,第 4 个未到达 PHP

java - 将 Blob 转换为字节数组的最简单方法

php - 如何设计高效的Like系统?

mysql - 使用表单将一个mysql表中的数据插入到另一个mysql表中

c# - Linq Union,避免空数据和重复数据