我看到了一个返回工作日的视图。结果将是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'
任何答案都将非常有帮助! 对不起,我的英语不好
答案 0 :(得分:0)
结果将成为WHERE子句中的一列
如果是这种情况(您想比较一列),则该列应属于同一查询。
SELECT
*
FROM dvtv_delivery
WHERE
day = 'Y'
答案 1 :(得分:0)
假设子查询恰好返回一行,则将执行您所写的查询:
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'
答案 2 :(得分:0)
此查询:
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, ....