mysql - 使用 IF 语句和子查询在 mysql 查询中出错
问题描述
我有(至少对我来说)一个复杂的查询,我用这个网站的例子构建了这个查询。我添加的最后一件事是 IF
声明。如果没有 IF 语句,它正在使用 IF 语句的 TRUE 部分。我希望你们女孩/男人可以在这里帮助我。这是查询:
SELECT
t.ID, t.start_time, t.end_time, t.start_date, t.end_date, t.balance,
u1.first_name AS teacher_one_first_name, u1.last_name AS teacher_one_last_name,
u2.first_name AS teacher_two_first_name, u2.last_name AS teacher_two_last_name,
company.name, company.post_city, tag, lvl,
IF(
t.balance=1,
(
(SELECT count(user_ID)
FROM company_lesson_block_student
WHERE lead_follow=0 AND company_lesson_block_ID=t.ID) AS lead,
(SELECT count(user_ID)
FROM company_lesson_block_student
WHERE lead_follow=1 AND company_lesson_block_ID=t.ID) AS follow
),
(SELECT count(user_ID)
FROM company_lesson_block_student
WHERE company_lesson_block_ID=t.ID) AS total_student
)
FROM company_lesson_block AS t
LEFT JOIN company_lvl ON company_lvl.ID = t.lvl_ID
LEFT JOIN tag ON tag.ID = t.style_ID
LEFT JOIN company ON company.ID=t.location_ID
LEFT JOIN user AS u1 ON t.teacher_one_ID=u1.ID
LEFT JOIN user AS u2 ON t.teacher_two_ID=u2.ID
WHERE t.company_ID='1' AND location_ID='1' AND company_season_ID='1'
ORDER BY start_date ASC
我得到的错误信息是:
您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 10 行的“AS Lead, (SELECT count(user_ID) FROM company_less”附近使用正确的语法
任何帮助/提示都适用
解决方案
您想返回 2 列,但IF
只能返回 1,因此需要 2IF
秒:
........................
IF(
t.balance=1,
(SELECT count(user_ID)
FROM company_lesson_block_student
WHERE lead_follow=0 AND company_lesson_block_ID=t.ID),
(SELECT count(user_ID)
FROM company_lesson_block_student
WHERE company_lesson_block_ID=t.ID)
) AS ????,
IF(
t.balance=1,
(SELECT count(user_ID)
FROM company_lesson_block_student
WHERE lead_follow=1 AND company_lesson_block_ID=t.ID),
(SELECT count(user_ID)
FROM company_lesson_block_student
WHERE company_lesson_block_ID=t.ID)
) AS ????
........................
您必须在 . 的右括号之后设置别名IF
。
也许你必须重新考虑这个逻辑,因为在 的情况下FALSE
,相同的值会返回两次。
推荐阅读
- arrays - Angular - 将表单字段验证规则(例如 firstname.dirty )放入 TypeScript 数组?
- javascript - Flutter - 在 Flutter 应用程序上执行/运行 Facebook 像素代码(Javascript 代码)
- mysql - 多连接查询返回最近发货产品的记录
- linux - 带有“and”和“or”运算符的 Linux 脚本
- python - 在 SHAP 解释器中使用样本权重
- python - 在 Keras 中为多标签文本分类神经网络创建带有 Attention 的 LSTM 层
- python-3.x - 我应该删除我不再打算使用的变量吗?
- reactjs - 功能组件问题 React
- python - 使用 pyside2 时出现 QNetworkAccessManager https UnknownNetworkError
- javascript - 如何要求在 ES6 模块中导出的常量?