1.10. 执行复杂的条件语句

本文介绍了如何在ActionScript中使用逻辑运算符AND, OR 和 NOT来创建复杂的条件语句。通过示例展示了如何利用这些逻辑运算符进行日期检查、工作日判断以及用户身份验证等实际操作。
1.10. 执行复杂的条件语句
 
问题
我要在多个条件中做出决定
解决办法
可以使用逻辑运算符AND (&&), OR (||), 和 NOT (!) 来创建符合条件语句。
讨论
 
ActionScript中的很多语句都能包含条件表达式。包括 if, while, 和 for 语句,如果测试两个条件都成立可以使用逻辑运算符 AND , &&, (更多细节请看第14章):
// 测试今天是否是3月17号
var current:Date = new Date(  );
if (current.getDate(  ) == 17 && current.getMonth(  ) == 3) {
  trace ("Happy Birthday, Bruce!");
}
加入些括号让结构更加清晰:
// Check if today is April 17th.
if ((current.getDate(  ) == 17) && (current.getMonth(  ) == 3)) {
  trace ("Happy Birthday, Bruce!");
}
这里使用了逻辑运算符OR , ||, 来测试是否其中有个条件成立:
// 测试是否是周末
if ((current.getDay(  ) == 0) || (current.getDay(  ) == 6) ) {
  trace ("Why are you working on a weekend?");
}
还可以使用 NOT, !, 来测试条件不是真的:
// 检测名字不是Bruce.
if (!(userName == "Bruce")) {
  trace ("This application knows only Bruce's birthday.");
}
上面的例子还可以这么写:
if (userName != "Bruce") {
  trace ("This application knows only Bruce's birthday.");
}

任何布尔值或能得出布尔结果的表达式都能作为测试表达式:
// 检测如果sprite 是可见的,则输出信息
if (_sprite.visible) {
  trace("The sprite is visible.");
}

NOT 运算符经常被用来检测是否是false:
// 检测如果 sprite 是不可见的,则输出信息:
if (!_sprite.visible) {
  trace("The sprite is invisible. Set it to visible before trying this action.");
}

NOT 经常和 OR 一起用:
// 检测既不是Bruce 有不是 Joey.
if (!((userName == "Bruce") || (userName == "Joey"))) {
  trace ("Sorry, but only Bruce and Joey have access to this application.");
}
 
### SQL UPDATE 语句中通过 WHERE 条件关联其他表的实现方法 在 SQL 的 `UPDATE` 语句中,可以通过 `WHERE` 条件关联其他表,以实现多表数据更新。以下是详细的说明和示例: #### 多表关联更新的基本语法 ```sql UPDATE table1 SET column1 = value1, column2 = value2, ... FROM table2 WHERE table1.key = table2.foreign_key; ``` 或者使用显式的 `JOIN` 语法: ```sql UPDATE table1 SET column1 = value1, column2 = value2, ... FROM table1 INNER JOIN table2 ON table1.key = table2.foreign_key WHERE condition; ``` #### 示例:通过 `WHERE` 条件关联其他表 以下是一个具体的例子,展示如何通过 `WHERE` 条件关联多个表并进行更新。 假设存在两个表 `employees` 和 `departments`,其中 `employees` 表包含员工信息,`departments` 表包含部门信息。现在需要将所有属于 "Sales" 部门的员工工资增加 10%。 ```sql UPDATE employees e SET e.salary = e.salary * 1.10 FROM departments d WHERE e.department_id = d.id AND d.name = 'Sales'; ``` 此语句通过 `WHERE` 子句将 `employees` 表和 `departments` 表关联起来,并根据条件更新特定部门的员工工资[^3]。 #### 使用子查询进行多表关联更新 如果需要基于一个表中的某些条件来更新另一个表的数据,可以使用子查询。例如,更新 `serv_t` 表中的 `product_id` 字段,使其等于某个特定值,但仅当 `cust_t` 表中存在匹配的记录时才执行更新。 ```sql UPDATE serv_t a SET a.product_id = '222' WHERE EXISTS ( SELECT * FROM cust_t b WHERE a.cust_id = b.cust_id AND a.serv_id = 957194 ); ``` 在此示例中,`EXISTS` 子查询用于检查 `cust_t` 表中是否存在满足条件的记录,然后更新 `serv_t` 表中的相关数据[^4]。 #### 注意事项 - 在编写 `UPDATE` 语句时,务必确保 `WHERE` 条件中涉及的字段有索引支持,以避免全表扫描导致的性能问题[^3]。 - 如果需要更新多个表,可以考虑使用事务管理,以确保数据的一致性和完整性。 ### 示例代码 以下是一个完整的多表关联更新示例: ```sql -- 创建测试表 CREATE TABLE tb_user ( id INT PRIMARY KEY, username VARCHAR(50) ); CREATE TABLE tb_user_edu ( id INT PRIMARY KEY, degree VARCHAR(50), major VARCHAR(50), primaryschool VARCHAR(50), middleschool VARCHAR(50), university VARCHAR(50), userid INT, FOREIGN KEY (userid) REFERENCES tb_user(id) ); -- 插入测试数据 INSERT INTO tb_user (id, username) VALUES (1, 'Alice'), (2, 'Bob'); INSERT INTO tb_user_edu (id, degree, major, primaryschool, middleschool, university, userid) VALUES (1, '本科', '计算机科学', '光明小学', '希望中学', '清华大学', 1), (2, '硕士', '数学', '星光小学', '未来中学', '北京大学', 2); -- 执行多表关联更新 UPDATE tb_user u SET u.username = 'Charlie' FROM tb_user_edu ue WHERE u.id = ue.userid AND ue.university = '清华大学'; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值