繁体   English   中英

mysql,加入2个表,并检查2个条件

[英]mysql, joining 2 tables, and checking for 2 conditions

的MySQL

表格1:

+--------+------+
| listid | type |
+--------+------+
|    1   |  a   |
+--------+------+
|    2   |  a   |
+--------+------+
|    3   |  b   |
+--------+------+

表2:

+----+--------+------+
| id | listid | code |
+----+--------+------+
|  1 |    1   |  ax  |
+----+--------+------+
|  2 |    1   |  bx  |
+----+--------+------+
|  3 |    2   |  ax  |
+----+--------+------+
|  4 |    2   |  bx  |
+----+--------+------+
|  5 |    2   |  cx  |
+----+--------+------+
|  6 |    3   |  ax  |
+----+--------+------+
|  7 |    3   |  bx  |
+----+--------+------+

任务

在一个查询中,我要检查是否:

1)在表table2中,仅将“ ax”和“ bx”列为代码

2)我在1)中获得的listid的类型在表table1中为“ a”

的PHP

$a = mysql_query("SELECT t1.listid FROM table1 AS t1, table2 AS t2......");
$b = mysql_fetch_assoc($a);

if($b['listid'])
{
    echo $b['listid'];
}
else
{
    echo 'nothing found';
}

输出量

listid = 1

listid = 2为false,因为table2中还包含“ cx”

listid = 3为假,因为它在表1中具有类型“ b”

我希望这是有道理的 :)

SELECT  t1.listid
FROM    t1
WHERE   type = 'a'
        AND id NOT IN
        (
        SELECT  listid
        FROM    t2
        WHERE   code NOT IN ('ax', 'bx')
        )

这也将匹配来自t1记录,这些记录在t2中根本没有对应的记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM