繁体   English   中英

如何在另一个查询中将SQL查询结果用作列?

[英]How can I use a SQL query result as a column in another query?

我的观点可以在工作日返回。 结果将是WHERE子句中的一列,如下所示:

 SELECT * FROM dvtv_delivery WHERE (SELECT day FROM dvtv_weekday) = 'Y'

例如:

今天是星期天,在dvtv_weekday返回SUN在dvtv_delivery中存在列SUN

Mysql中可能吗? 当我跑步时,什么也没出现

使用下面我用下,工作

  SELECT * FROM dvtv_delivery WHERE SUN = 'Y'

任何答案都将真正有帮助! 对不起我的英语不好

结果将是WHERE子句中的一列

如果是这种情况(您想比较一列),则该列应属于同一查询。

SELECT
    *
FROM dvtv_delivery
WHERE
    day = 'Y'

假设子查询恰好返回一行,则将按书面形式执行查询:

SELECT *
FROM dvtv_delivery
WHERE (SELECT day FROM dvtv_weekday) = 'Y'

这样的查询是标量子查询 它必须返回一列,最多返回一行(在大多数情况下)。

通常,此类子查询与外部查询相关 这意味着WHERE子句连接两个表中的值。 目前尚不清楚相关子句在这种情况下是什么样子,但是查询的结构是:

SELECT d.*
FROM dvtv_delivery d
WHERE (SELECT wd.day
       FROM dvtv_weekday wd
       WHERE wd.? = d.?  -- maybe these would be date columns?
      ) = 'Y'

该查询:

SELECT day FROM dvtv_weekday

返回类似'SUN'的字符串,而不是SUN列的名称。
因此,WHERE等效于:

WHERE 'SUN' = 'Y'

它将始终不返回任何行。
您需要这样的东西:

SELECT * FROM dvtv_delivery 
WHERE 
  CASE (SELECT day FROM dvtv_weekday) 
    WHEN 'SUN' THEN SUN
    WHEN 'MON' THEN MON
    WHEN 'TUE' THEN TUE
    WHEN 'WED' THEN WED
    WHEN 'THU' THEN THU
    WHEN 'FRI' THEN FRI
    WHEN 'SAT' THEN SAT
  END = 'Y'

我假设表dvtv_delivery具有所有这些列: SUN, MON, ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM