mysql - 在 WHERE 语句中使用变量列名

标签 mysql

这不起作用。我的列名称包括周一、周二、周三、周四、周五、周六、周日,设置为 0 或 1。我试图根据当前的 3 位数星期几来查看列名称是 0 还是 1。

SET @var = DATE_FORMAT(NOW(), '%a') 
SELECT *, @var 
FROM team LEFT JOIN fav ON team.Tag = fav.Tag WHERE ID = '123456' AND @var = '1' 
ORDER BY team.Name

最佳答案

变量的 @var 值是字符串文字,不能用作列。
您可以使用 CASE 表达式执行您想要的操作:

SET @var = DATE_FORMAT(NOW(), '%a'); 
SELECT *, @var 
FROM team LEFT JOIN fav 
ON team.Tag = fav.Tag 
WHERE ID = '123456' 
AND '1' = CASE @var
  WHEN 'Mon' THEN Mon
  WHEN 'Tue' THEN Tue
  WHEN 'Wed' THEN Wed
  WHEN 'Thu' THEN Thu
  WHEN 'Fri' THEN Fri
  WHEN 'Sat' THEN Sat
  WHEN 'Sun' THEN Sun
END
ORDER BY team.Name;

或者没有变量:

SELECT * 
FROM team LEFT JOIN fav 
ON team.Tag = fav.Tag 
WHERE ID = '123456' 
AND '1' = CASE DATE_FORMAT(NOW(), '%a')
  WHEN 'Mon' THEN Mon
  WHEN 'Tue' THEN Tue
  WHEN 'Wed' THEN Wed
  WHEN 'Thu' THEN Thu
  WHEN 'Fri' THEN Fri
  WHEN 'Sat' THEN Sat
  WHEN 'Sun' THEN Sun
END
ORDER BY team.Name;

CASE 表达式内,使用表 (teamfav) 限定 Mon、Tue、Wed、Thu、Fri、Sat、Sun 列>) 他们属于。

关于mysql - 在 WHERE 语句中使用变量列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58826316/

相关文章:

mysql - MySQL的触发器是并发的吗?

php - 使用 php 和 MySql 的 html 下拉列表

mysql - 添加第二个 INNER JOIN MySQL

php - SQL 从 PHP 插入奇怪的语法错误 MYSQL

mysql - 使用 Mysql Ruby 设置连接超时

php - MySQL - 基于另一个查询的查询

php - 更改 php.ini 中的 max_upload_filesize 但在 phpMyAdmin 中保持不变

mysql - 向变量满足条件的行添加不同的类/样式

mysql - 删除重复行但保持多对多关系

mysql - 表列作为变量