首页 > 解决方案 > SQL灵活查询结果

问题描述

我对 SQL 方面还是很陌生。我一直在试图弄清楚如何给你一个 in 标准,但让它决定查询是等于 1 个结果还是多个。我所拥有的如下。

我可能做错了,但我想我会问。

 SELECT employee_name
      , transaction_id
      , department
      , transaction_date
      , transaction_day
   FROM employee_transactions
  WHERE transaction_date 
BETWEEN '2018-08-20 07:14:35.000' 
    AND '2019-02-05 08:29:56.000'
    AND CASE WHEN '$variable' = 'All' 
             THEN inc_day IN (
                 SELECT DISTINCT transaction_day 
                   FROM employee_transactions
           ) ELSE inc_day in ('$variable')
             END

我的意思是在列交易日有星期一、星期二、星期三等的条目,但所有条目都不在那里。因此,在之前的表格中,如果他们选择从所有日子中提取的所有内容,而不是仅选择一个,但是如果他们从星期一开始,则只需显示 monda

标签: phpsqltsql

解决方案


您应该编写如下查询。

SELECT employee_name, 
        transaction_id, 
        department, 
        transaction_date, 
        transaction_day

  FROM employee_transactions
  WHERE transaction_date 
  BETWEEN '2018-08-20 07:14:35.000' 
  AND '2019-02-05 08:29:56.000'
  AND ( '$variable' = 'All' OR inc_day = '$variable')

上面的查询将返回 $variable = 'ALL' 时的所有记录,否则只匹配记录。

假设 '$variable' 将在查询执行之前被替换。


推荐阅读