Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 检查另一个表中是否存在记录 任务;身份证 任务分配;任务id 任务状态;id,分配\u id 国家;id,state\u id,define\u id_Mysql_Sql_Inner Join - Fatal编程技术网

Mysql 检查另一个表中是否存在记录 任务;身份证 任务分配;任务id 任务状态;id,分配\u id 国家;id,state\u id,define\u id

Mysql 检查另一个表中是否存在记录 任务;身份证 任务分配;任务id 任务状态;id,分配\u id 国家;id,state\u id,define\u id,mysql,sql,inner-join,Mysql,Sql,Inner Join,我想在其他表中包含至少一个选定ID SELECT DISTINCT t.id,t.* FROM tasks AS t INNER JOIN task_assign AS ta1 ON ta1.task_id=t.id INNER JOIN task_state AS ts1 ON ts1.assign_id=ta1.id INNER JOIN states AS s1 ON s1.id=ts1.state_id AND s1.define_id=14 INNER JOIN task_assign

我想在其他表中包含至少一个选定ID

SELECT DISTINCT t.id,t.* FROM tasks AS t
INNER JOIN task_assign AS ta1 ON ta1.task_id=t.id
INNER JOIN task_state AS ts1 ON ts1.assign_id=ta1.id
INNER JOIN states AS s1 ON s1.id=ts1.state_id AND s1.define_id=14
INNER JOIN task_assign AS ta2 ON ta2.task_id=t.id
INNER JOIN task_state AS ts2 ON ts2.assign_id=ta2.id
INNER JOIN states AS s2 ON s2.id=ts2.state_id AND s2.define_id=21
.
.
.
INNER JOIN task_assign AS ta5 ON ta5.task_id=t.id
INNER JOIN task_state AS ts5 ON ts5.assign_id=ta5.id
INNER JOIN states AS s5 ON s5.id=ts5.state_id AND s5.define_id=25
这是可行的,但当你要求它慢下来。还有别的方法吗

SELECT
    t.id
FROM
    tasks t
INNER JOIN
    task_assign ta1
    ON ta1.task_id = t.id
INNER JOIN
    task_state ts1
    ON ts1.assign_id = ta1.id
INNER JOIN
    states s1
    ON s1.id = ts1.state_id
    AND s1.define_id IN (14,25)
GROUP BY
    t.id
HAVING
    COUNT(DISTINCT s1.define_id) = 2
编辑-向OP解释它的作用。。。
这将首先检索define_id为14或25的所有记录,但
HAVING
子句将只允许查询返回同时具有这两个属性的记录。

您能否澄清您的要求?从我可以告诉你的情况来看,你想要所有表中都存在的任务id??另外,为什么要这样做?:
选择不同的t.id,t.*
您知道
t.*
已经包含
t.id
?为什么要多次加入同一个表?有什么具体原因吗?添加示例输入数据并输出您想要获取的内容。其他表没有任务id。只有任务分配有任务id。
为uniqe记录选择不同的t.id,t.*
。如果使用多个连接,记录将重复。我可以分组使用。这是同样的事情;)这里肯定有问题,请澄清您实际需要得到什么,几乎可以肯定有一种比内部连接相同表N次更好的方法。这是可以的,但它应该具有相同的时间其他id。
s1.define_id IN(14,25)
这表示“或”14或25。我想要14个,同时25个。有个问题。若任务有两个相同的define_id(ex;14),并且并没有其他define_id(ex 25),那个么它将获取任务。它不应该获取该记录。