您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

DRY-可能如何提取重复的代码到“存储的函数”中?

DRY-可能如何提取重复的代码到“存储的函数”中?

我建议使用VIEW:

CREATE OR REPLACE VIEW uploads_current AS
  SELECT * FROM `uploads
  WHERE `deleted` <> 1 AND `archived` <> 1;
@H_301_5@

然后,您可以使用其他条件查询它:

  SELECT * FROM `uploads_current`
  WHERE `uid` = :uid;
@H_301_5@

您可以稍后重新定义视图:

CREATE OR REPLACE VIEW uploads_current AS
  SELECT * FROM `uploads
  WHERE `deleted` <> 1 AND `archived` <> 1 AND uploadsuccess = 1;
@H_301_5@

然后,所有查询uploads_current的代码都将隐式包含相同的条件,而无需更改代码

进一步了解VIEW:https://dev.MysqL.com/doc/refman/5.7/en/create- view.html

解决方法

这些语句的第三行完全相同:

声明1

SELECT * FROM `uploads`
WHERE `uid` = :uid
AND `deleted` <> 1  AND `archived` <> 1

声明2

SELECT * FROM `uploads`
WHERE `folder_id` = :folder_id
AND `deleted` <> 1  AND `archived` <> 1

第三行也用于许多其他语句中,比如说30种不同的语句。在这个人为的示例中,它的意思是“我们从上载表中获取所有尚未删除或存档的文件”。如果将来我们需要在其中添加第三个限定符(例如AND uploadsuccess = 1),则必须编辑30个不同的sql语句。根本不干。我们如何在这里通过SQL使用MySQL的DRY原理(在我们的例子中为MySQL,如果这是一个重要因素)?

谢谢你的帮助。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
  SELECT * FROM `uploads_current`
  WHERE `uid` = :uid;
@H_301_5@

您可以稍后重新定义视图:

CREATE OR REPLACE VIEW uploads_current AS
  SELECT * FROM `uploads
  WHERE `deleted` <> 1 AND `archived` <> 1 AND uploadsuccess = 1;
@H_301_5@

然后,所有查询uploads_current的代码都将隐式包含相同的条件,而无需更改代码

进一步了解VIEW:https://dev.MysqL.com/doc/refman/5.7/en/create- view.html

解决方法

这些语句的第三行完全相同:

声明1

SELECT * FROM `uploads`
WHERE `uid` = :uid
AND `deleted` <> 1  AND `archived` <> 1

声明2

SELECT * FROM `uploads`
WHERE `folder_id` = :folder_id
AND `deleted` <> 1  AND `archived` <> 1

第三行也用于许多其他语句中,比如说30种不同的语句。在这个人为的示例中,它的意思是“我们从上载表中获取所有尚未删除或存档的文件”。如果将来我们需要在其中添加第三个限定符(例如AND uploadsuccess = 1),则必须编辑30个不同的sql语句。根本不干。我们如何在这里通过SQL使用MySQL的DRY原理(在我们的例子中为MySQL,如果这是一个重要因素)?

谢谢你的帮助。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
CREATE OR REPLACE VIEW uploads_current AS
  SELECT * FROM `uploads
  WHERE `deleted` <> 1 AND `archived` <> 1 AND uploadsuccess = 1;
@H_301_5@

然后,所有查询uploads_current的代码都将隐式包含相同的条件,而无需更改代码

进一步了解VIEW:https://dev.MysqL.com/doc/refman/5.7/en/create- view.html

解决方法

这些语句的第三行完全相同:

声明1

SELECT * FROM `uploads`
WHERE `uid` = :uid
AND `deleted` <> 1  AND `archived` <> 1

声明2

SELECT * FROM `uploads`
WHERE `folder_id` = :folder_id
AND `deleted` <> 1  AND `archived` <> 1

第三行也用于许多其他语句中,比如说30种不同的语句。在这个人为的示例中,它的意思是“我们从上载表中获取所有尚未删除或存档的文件”。如果将来我们需要在其中添加第三个限定符(例如AND uploadsuccess = 1),则必须编辑30个不同的sql语句。根本不干。我们如何在这里通过SQL使用MySQL的DRY原理(在我们的例子中为MySQL,如果这是一个重要因素)?

谢谢你的帮助。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
SELECT * FROM `uploads`
WHERE `uid` = :uid
AND `deleted` <> 1  AND `archived` <> 1
SELECT * FROM `uploads`
WHERE `folder_id` = :folder_id
AND `deleted` <> 1  AND `archived` <> 1

然后,您可以使用其他条件查询它:

您可以稍后重新定义视图:

然后,所有查询uploads_current的代码都将隐式包含相同的条件,而无需更改代码

进一步了解VIEW:https://dev.MysqL.com/doc/refman/5.7/en/create- view.html

这些语句的第三行完全相同:

声明1

声明2

第三行也用于许多其他语句中,比如说30种不同的语句。在这个人为的示例中,它的意思是“我们从上载表中获取所有尚未删除或存档的文件”。如果将来我们需要在其中添加第三个限定符(例如AND uploadsuccess = 1),则必须编辑30个不同的sql语句。根本不干。我们如何在这里通过SQL使用MySQL的DRY原理(在我们的例子中为MySQL,如果这是一个重要因素)?

谢谢你的帮助。

然后,您可以使用其他条件查询它:

  SELECT * FROM `uploads_current`
  WHERE `uid` = :uid;
@H_301_5@

您可以稍后重新定义视图:

CREATE OR REPLACE VIEW uploads_current AS
  SELECT * FROM `uploads
  WHERE `deleted` <> 1 AND `archived` <> 1 AND uploadsuccess = 1;
@H_301_5@

然后,所有查询uploads_current的代码都将隐式包含相同的条件,而无需更改代码

进一步了解VIEW:https://dev.MysqL.com/doc/refman/5.7/en/create- view.html

解决方法

这些语句的第三行完全相同:

声明1

SELECT * FROM `uploads`
WHERE `uid` = :uid
AND `deleted` <> 1  AND `archived` <> 1

声明2

SELECT * FROM `uploads`
WHERE `folder_id` = :folder_id
AND `deleted` <> 1  AND `archived` <> 1

第三行也用于许多其他语句中,比如说30种不同的语句。在这个人为的示例中,它的意思是“我们从上载表中获取所有尚未删除或存档的文件”。如果将来我们需要在其中添加第三个限定符(例如AND uploadsuccess = 1),则必须编辑30个不同的sql语句。根本不干。我们如何在这里通过SQL使用MySQL的DRY原理(在我们的例子中为MySQL,如果这是一个重要因素)?

谢谢你的帮助。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
CREATE OR REPLACE VIEW uploads_current AS
  SELECT * FROM `uploads
  WHERE `deleted` <> 1 AND `archived` <> 1 AND uploadsuccess = 1;
@H_301_5@

然后,所有查询uploads_current的代码都将隐式包含相同的条件,而无需更改代码

进一步了解VIEW:https://dev.MysqL.com/doc/refman/5.7/en/create- view.html

解决方法

这些语句的第三行完全相同:

声明1

SELECT * FROM `uploads`
WHERE `uid` = :uid
AND `deleted` <> 1  AND `archived` <> 1

声明2

SELECT * FROM `uploads`
WHERE `folder_id` = :folder_id
AND `deleted` <> 1  AND `archived` <> 1

第三行也用于许多其他语句中,比如说30种不同的语句。在这个人为的示例中,它的意思是“我们从上载表中获取所有尚未删除或存档的文件”。如果将来我们需要在其中添加第三个限定符(例如AND uploadsuccess = 1),则必须编辑30个不同的sql语句。根本不干。我们如何在这里通过SQL使用MySQL的DRY原理(在我们的例子中为MySQL,如果这是一个重要因素)?

谢谢你的帮助。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
SELECT * FROM `uploads`
WHERE `uid` = :uid
AND `deleted` <> 1  AND `archived` <> 1
SELECT * FROM `uploads`
WHERE `folder_id` = :folder_id
AND `deleted` <> 1  AND `archived` <> 1

您可以稍后重新定义视图:

然后,所有查询uploads_current的代码都将隐式包含相同的条件,而无需更改代码

进一步了解VIEW:https://dev.MysqL.com/doc/refman/5.7/en/create- view.html

这些语句的第三行完全相同:

声明1

声明2

第三行也用于许多其他语句中,比如说30种不同的语句。在这个人为的示例中,它的意思是“我们从上载表中获取所有尚未删除或存档的文件”。如果将来我们需要在其中添加第三个限定符(例如AND uploadsuccess = 1),则必须编辑30个不同的sql语句。根本不干。我们如何在这里通过SQL使用MySQL的DRY原理(在我们的例子中为MySQL,如果这是一个重要因素)?

谢谢你的帮助。

您可以稍后重新定义视图:

CREATE OR REPLACE VIEW uploads_current AS
  SELECT * FROM `uploads
  WHERE `deleted` <> 1 AND `archived` <> 1 AND uploadsuccess = 1;
@H_301_5@

然后,所有查询uploads_current的代码都将隐式包含相同的条件,而无需更改代码

进一步了解VIEW:https://dev.MysqL.com/doc/refman/5.7/en/create- view.html

解决方法

这些语句的第三行完全相同:

声明1

SELECT * FROM `uploads`
WHERE `uid` = :uid
AND `deleted` <> 1  AND `archived` <> 1

声明2

SELECT * FROM `uploads`
WHERE `folder_id` = :folder_id
AND `deleted` <> 1  AND `archived` <> 1

第三行也用于许多其他语句中,比如说30种不同的语句。在这个人为的示例中,它的意思是“我们从上载表中获取所有尚未删除或存档的文件”。如果将来我们需要在其中添加第三个限定符(例如AND uploadsuccess = 1),则必须编辑30个不同的sql语句。根本不干。我们如何在这里通过SQL使用MySQL的DRY原理(在我们的例子中为MySQL,如果这是一个重要因素)?

谢谢你的帮助。

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
SELECT * FROM `uploads`
WHERE `uid` = :uid
AND `deleted` <> 1  AND `archived` <> 1
SELECT * FROM `uploads`
WHERE `folder_id` = :folder_id
AND `deleted` <> 1  AND `archived` <> 1

然后,所有查询uploads_current的代码都将隐式包含相同的条件,而无需更改代码

进一步了解VIEW:https://dev.MysqL.com/doc/refman/5.7/en/create- view.html

这些语句的第三行完全相同:

声明1

声明2

第三行也用于许多其他语句中,比如说30种不同的语句。在这个人为的示例中,它的意思是“我们从上载表中获取所有尚未删除或存档的文件”。如果将来我们需要在其中添加第三个限定符(例如AND uploadsuccess = 1),则必须编辑30个不同的sql语句。根本不干。我们如何在这里通过SQL使用MySQL的DRY原理(在我们的例子中为MySQL,如果这是一个重要因素)?

谢谢你的帮助。

然后,所有查询uploads_current的代码都将隐式包含相同的条件,而无需更改代码

进一步了解VIEW:https://dev.MysqL.com/doc/refman/5.7/en/create- view.html

其他 2022/1/1 18:29:22 有310人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶