-1

当我运行语句以查看特定日期的行数时,我得到以下结果 - 3 行 在此处输入图像描述

然而,因为表 9 在 5 和 6 处有 2 个不同的数字,然后在 8 和 9 处,我真的需要像这样返回 4 行的结果

在此处输入图像描述

这是我使用的代码

SELECT BookingDate, Table, Five, Six, Seven, Eight, Nine, TenID
FROM **** WHERE BookingDate = '2013-09-24'

有任何想法吗?

4

1 回答 1

0

Five如果您想在or SixisNULLEightor Nineis not复制一行(即输入中只有一个这样的行)NULL,应该这样做:

SELECT *
FROM
(
  /* Select everything you want, one of each */
  SELECT BookingDate, `Table`, Five, Six, Seven, Eight, Nine, TenID
  FROM ...
  WHERE BookingDate = '2013-09-24'

  UNION ALL

  /* Select all rows that should be duplicated */
  SELECT BookingDate, `Table`, Five, Six, Seven, Eight, Nine, TenID
  FROM ...
  WHERE BookingDate = '2013-09-24'
    AND (Five  IS NOT NULL OR Six  IS NOT NULL)
    AND (Eight IS NOT NULL OR Nine IS NOT NULL)
) a
ORDER BY `Table`  /* or whatever you want to order by */

Table是一个保留字,这就是为什么它需要在`'s 中(在我个人看来,您最好不要使用保留字作为列/表名)。

如果这不是您想要的,我希望它足以得出您想要的。

于 2013-09-25T09:33:38.310 回答