select a.id, a.one, a.two,b.three FROM a
left join b
on b.three=a.one and b.three=a.two
group by a.id
此查询正确吗?
我希望b.three
等于a.one
,也希望a.two
a.one
和a.two
具有不同的值。
答案 0 :(得分:1)
您好,正如您在问题中提到的, a.one和a.two具有不同的值,并且您想获取 b.three必须等于a.one的结果和a.two
因此,只有当您同时拥有a.one和a.two两个值时,您当前的查询才会给出结果。 如果您的数据几乎没有与a.one和a.two相似的值,并且想要与b.three进行比较,则可以,您的查询是完全正确的,但是如果a.one和a.two始终不同,则此查询将不会工作。
如果要获取b.three等于a.one或a.two的结果,则应使用Or条件代替and。
最好先弄清楚您的要求是什么,如果可能的话,您应该提供一些示例数据,以便其他人可以正确理解您的问题。
我希望这个回答对您有用。
答案 1 :(得分:0)
您可以通过2个参数加入2种方式:
SELECT *
FROM t1
JOIN t2 USING (id, date)
或:
JOIN t2 ON (t2.id = t1.id AND t2.date = t1.date)
但是问题是当您需要为两个条件都使用1个表列时,我没有针对这种情况提出请求。尝试一下,希望对您有所帮助!
答案 2 :(得分:0)
我也知道a.one和a.two不同的值查询是否不起作用。 但我想知道如何将这些列组合起来,然后等于b.three。
这是我真实示例的一部分。如果您希望我可以发送主要问题。
答案 3 :(得分:0)
$con =mysqli_connect('localhost','root','','DB'); if
(!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip=$_SERVER['HTTP_CLIENT_IP']; } elseif
(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else {
$ip=$_SERVER['REMOTE_ADDR']; } $sql ="SELECT kafsent.id, kafsent.home,
COUNT(likes.ip) as like
FROM kafsent
LEFT JOIN likes
ON likes.post=kafsent.id
GROUP BY kafsent.id"; $query=mysqli_query($con,$sql) ; while($row=mysqli_fetch_assoc($query)){ $home =$row['home']; $id =$row['id']; $likes =$row['like']; ?> <a href="index.php?id=<?php echo $id; ?> "> <?php echo $home; ?></a> <?php echo $likes; ?>
<?php } ?> <?php if(isset($_GET['id'])){ $id= (int)$_GET['id']; $query= "INSERT INTO likes(odd_id,ip)
SELECT '$id', '$ip' FROM kafsent WHERE EXISTS( SELECT id FROM test WHERE id='$id') AND NOT EXISTS( SELECT id FROM likes WHERE ip='$ip' AND odd_id='$id' ) LIMIT 1 ";enter image description here $result=mysqli_query($con,$query); header('Location:index.php'); }
答案 4 :(得分:0)