我通过PHP执行了以下查询,它曾经像昨天一样工作,并且今天停止了工作,在这里:
SELECT
*,
(SELECT IF (pro.uid= '4342','True','False') FROM pro) AS 'uid'
FROM
Episodes, pro
ORDER BY
Episodes.id DESC
LIMIT 9
' 4342
'使用GET参数更改,我有以下错误:
命令不同步;你现在不能运行这个命令
我的PHP API如下(片段):
<?php
include_once "db_config.php";
DEFINE ('DB_HOST', $host);
DEFINE ('DB_USER', $user);
DEFINE ('DB_PASSWORD', $pass);
DEFINE ('DB_NAME', $database);
$mysqli = @($GLOBALS["___mysqli_ston"] = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD)) OR die ('Could not connect to MySQL');
@((bool)mysqli_query($GLOBALS["___mysqli_ston"], "USE " . constant('DB_NAME'))) OR die ('Could not select the database');
?>
<?php
if(isset($_GET['meaE'], $_GET['uid']))
{
$query="SELECT * , (SELECT IF (pro.uid= '".$_GET['uid']."','True','False') FROM pro ) AS 'uid' FROM Episodes,pro ORDER BY Episodes.id DESC LIMIT 9
";
$resouter = mysqli_query($GLOBALS["___mysqli_ston"], $query);
}
$set = array();
$total_records = mysqli_num_rows($resouter);
if($total_records >= 1){
while ($link = mysqli_fetch_array($resouter, MYSQLI_ASSOC)){
$set['APITest'][] = $link;
}
}
echo $val= str_replace('\\/', '/', json_encode($set));
?>
我希望得到以下输出:
TABLE A - TABLE B
ID NAME TEXT UID - Check_ID
我想要的查询:
从表A中选择*,检查是否&#34; 134123123&#34;存在于B中,如果是/否则为表A中所有采用的记录添加记录,其值为checked(True / False)。
@sagi查询发生了什么:
表B中有3条记录,表A中有10条记录,执行查询时,结果为30条记录,表B中的每条记录都有表A中的10条记录,&#34; uid&# 34;如果uid是“134123123”,则记录值为True,如果不是“134123123”,则记录值为false;如果不是,则为#134; 134123123&#39;&#39; 134123123&#39;
答案 0 :(得分:2)
您的查询似乎有误,我不知道昨天是如何运作的,但是现在您正在交叉加入条件(可能是正确但我怀疑) - 这意味着episodes
中的每条记录都将加入pro
中的每条记录。此外,带有IF
的子查询将返回多于1条记录,除非此表仅包含1条记录(这再次 - 我对此表示怀疑)。
试试这个:
SELECT distinct t.*, IF (s.uid is null,'True','False') AS 'uid'
FROM Episodes t
Left JOIN pro s
ON(s.uid = '4342')
ORDER BY t.id DESC
LIMIT ?????
尝试使用子查询而不是连接:
Select t.*,
Case when exists(select 1 from pro s where s.uid = '4342')
Then 'true' else 'false'
End as 'uid'
From episodes t
Order by t.id desc
Limit 9;