php - 如何在 MySQL 中执行 IF THEN 语句?

标签 php mysql select if-statement

MysQL(表 1):

+----+--------+-------+--------+
| id | itemid | title | status |
+----+--------+-------+--------+
| 1  |   2    | title |   0    |
+----+--------+-------+--------+
| 2  |   2    | title |   1    |
+----+--------+-------+--------+
| 3  |   3    | title |   1    |
+----+--------+-------+--------+
| 4  |   3    | title |   0    |
+----+--------+-------+--------+
| 5  |   3    | title |   0    |
+----+--------+-------+--------+

MySQL(表 2):

+----+---+---+
| id | x | y |
+----+---+---+
| id | 1 | 2 |
+----+---+---+

PHP:

(我知道下面的查询没有意义,但它应该只是说明我在这里要做什么。)

$a = mysql_query("SELECT t1.title FROM table1 AS t1 WHERE t1.title = 'title' ...IF t1.status = 1 THEN (SELECT * FROM table2 AS t2 WHERE t2.x = '1' AND t2.y = t1.itemid) ORDER BY `id`");
while($b = mysql_fetch_assoc($a))
{
    echo $b['title'];
}

所以,我想做的是:

1) 从table1中获取所有匹配title = title

的行

2) 如果table1中的status等于0什么都不做,只显示数据

3) 然而,如果 table1 中的 status 等于 1 那么它应该检查 中是否有记录table2 其中 x = 1y = itemid(来自 table1),如果没有,则来自 table1 的数据应该被排除

示例: 在上面的例子中,应该显示ids (table1): 1, 2, 4, 5 ...3应该被排除,因为status是1,表2中没有匹配的记录。

我希望这是有道理的:/

最佳答案

你应该为此使用 join。

Mysql join

或者看看如何在 select 语句中使用控制流函数:

Control flow functions

关于php - 如何在 MySQL 中执行 IF THEN 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5922865/

相关文章:

php - 如何在新标签页上打开谷歌广告?

php - 删除各种空格的单一功能

php - 是否有像 ruby​​ 调试器一样的 php 交互式调试器?

mysql - 在 Jasper 报告变量中使用 SUM

mysql - 当 "where"子句来自第三个表时,连接两个表之间的数据

mysql - 循环中的事件处理程序似乎使其下面编写的每个代码都无效

php - 为什么不对页面请求使用 ajax 来加载页面内容?

mysql - 如何选择年龄范围内的人

mysql - SQL 查询从两个表中选择匹配和缺失的值

php - 从联结表中选择一定数量的行