【问题标题】:MySQL return a blank row every other row from a select?MySQL从选择中每隔一行返回一个空白行?
【发布时间】:2011-04-29 14:33:54
【问题描述】:

我想知道 select 语句是否有办法每隔一行返回一个空行(或每列的所有空值的行),这样我就可以在从 MySQL 导出结果后避免这样做.

我无法以任何我能想到的方式做到这一点,而且谷歌无法引导我。

【问题讨论】:

  • 您是否意识到返回空行不是数据库的工作?它应该根据您提供的查询处理数据并返回结果,而不是设置结果的样式。您需要使用编程语言为您或您导出数据的程序执行此操作。
  • 您想从数据库中选择空行吗?为什么你真的想这样做?什么空值?空值?老实说,我不明白。
  • 根据我收集的信息,他要求包含数据的每一行都附加空行,以便用于导出的程序中的样式是正确的。如果我错了,请随时纠正我。
  • Michael J.V. 是对的,是的,我意识到这不是工作 - 但它也为我发送这些数据的人节省了一步,如果可以在选择查询中做到这一点获取数据,我宁愿为他们删除该步骤。
  • 啊哈,那我恐怕不会有什么帮助,因为我不知道任何 sql 代码来帮助它。

标签: mysql


【解决方案1】:

假设我有一个表 user 有 3 列:user_iduser_namepassword。这是一种使用LEFT JOIN 为表的每一列选择一行null 值的方法,而无需在SELECT 中单独指定列:

SELECT u.*
FROM (SELECT null) a
LEFT JOIN `user` u
ON false;

此查询将返回:

+---------+-----------+----------+
| user_id | user_name | password |
+---------+-----------+----------+
|    NULL |      NULL |     NULL |
+---------+-----------+----------+

【讨论】:

    【解决方案2】:

    我不是 100% 确定我得到了你想要的。你在寻找类似SELECT * FROM table1 LIMIT 0 的东西吗?

    【讨论】:

      【解决方案3】:

      有时这确实是必要的,例如在为应用程序使用数据库时。

      只使用:

      select 0 limit 0;
      

      【讨论】:

      • 这对我很有用,因为我无法从现有表中进行选择。
      【解决方案4】:

      (注意:我还不能离开 cmets,所以我在这里发布) 也许这会帮助您入门?

      你必须找到一种方法来循环这个:

      SELECT col1, col2, col3 FROM table LIMIT 1 UNION SELECT "", "", "";

      【讨论】:

        【解决方案5】:
        set @i := 0;
        set @j := 1;
        
        select c1
        from (
            select c1, @i := @i + 2 as o
            from my_table
            union
            select '' as c1, @j := @j + 2 as o
            from my_table
        ) ss
        order by o
        ;
        

        【讨论】:

          【解决方案6】:
          SELECT col1, col2, col3
          FROM (
                SELECT dummy, col1, col2, col3
                FROM (
                  SELECT col1 AS dummy, col1, col2, col3
                  FROM dumbtask
                  ORDER BY col1
                 ) t1
                 UNION ALL
                 (
                  SELECT col1 AS dummy, NULL AS col1, NULL AS col2, NULL AS col3
                  FROM dumbtask
                  ORDER BY dummy
                 )
                ORDER BY dummy) t3;
          

          我不得不说...这是我最近看到的最愚蠢的任务之一。

          【讨论】:

          • 您将每行加倍并按列排序。它不起作用,因为两个(或更多)相等值的结果顺序未确定。而且写得不好。
          • 应该有一个唯一的键(除非数据库设计和要完成的任务一样糟糕),所以等值问题不是问题。无论如何这只是一个例子——我不知道在ORDER BY 语句中是否还有其他字段或使用哪个字段。您是否认真抱怨这个问题的答案写得不好? :D
          【解决方案7】:

          可以不使用 Select,而是直接放置

          values row(null)
          

          values row('Or', 'any', 'other'), row('rows','and','columns')
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-09-23
            • 1970-01-01
            • 2013-05-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-25
            • 1970-01-01
            相关资源
            最近更新 更多