Mysql 查询以查找是否设置了外键
好的,我有两个MySQL表: 表格A包含以下列:idTableA和idTableB\u FK TableB包含以下列:idTableB和idTableA\u FK 这些关系如下:Mysql 查询以查找是否设置了外键,mysql,Mysql,好的,我有两个MySQL表: 表格A包含以下列:idTableA和idTableB\u FK TableB包含以下列:idTableB和idTableA\u FK 这些关系如下: 从表A到表B的一对多关系(TableA.idTableA PK和该关系的FK是表B.idTableA\u FK) 表A和表B之间的一对一关系(TableB.idTableB 是主键,在表a.idTableB_FK中表示。它是 一对一的关系,因为您只能在TableA中有一行执行 外键值 假设表A中有以下数据 idTabl
idTableA | idTableB_FK
-----------------------------
1 | 2
2 | 5
3 | 6
4 | 8
以及表B中的以下内容
idTableB | idTableA_FK
------------------------------
1 | 1
2 | 1
3 | 2
4 | 2
5 | 2
6 | 3
7 | 3
8 | 4
现在,我想要一个显示idTableA、idTableB和将显示的是_set列的查询。设置为是/否字段(或1/0),其中仅当表格a.idTableB_FK具有该FK的相应设置值时才设置为是。因此,对于上述示例:
idTableA | idTableB | is_set
---------------------------------------------
1 | 1 | no
1 | 2 | yes
2 | 3 | no
2 | 4 | no
2 | 5 | yes
3 | 6 | yes
3 | 7 | no
4 | 8 | yes
谢谢。好的,这是记忆中的,但应该可以。如果它是错误的,我可以运行它的东西,并修复它
SELECT tb.idTableA_FK AS idTableA, tb.idTableB, tbb.idTableB IS NOT NULL AS is_set
FROM TableB AS tb LEFT JOIN TableA AS ta ON (tb.idTableA_FK = ta.idTableA)
LEFT JOIN TableB AS tbb ON (ta.idTableB_FK = tbb.idTableB)
我相信这就是你想要的:
SELECT a.idTableA, b.idTableB, c.idTableB_FK IS NOT NULL is_set
FROM TableA a, TableB b LEFT JOIN TableA c ON b.idTableB=c.idTableB_FK
WHERE b.idTableA_FK=a.idTableA
我想你正在寻找这样的东西:
select
TableA.idTableA,
TableB.idTableB,
case when EXISTS(select null
from TableA TableA_1
where
TableA_1.idTableA = TableA.idTableA
and TableA_1.idTableB_FK = TableB.idTableB)
then 'yes' else 'no' end as is_set
from
TableB left join TableA
on TableB.idTableA_FK = TableA.idTableA
我最终做了这样的事:
SELECT b.idTableA_FK, b.idTableB ,
IF (
(SELECT a.idTableB_FK
FROM (TableA AS a)
WHERE a.idTableA = b.idTableA_FK
) = b.idTableB, TRUE, FALSE
) AS is_set
FROM (TableB AS b)
这产生了正确的结果
我要感谢所有的回应,我投票赞成,因为他/她提出的解决方案对我的解决方案有影响