mysql在查询中将两列合并为一

时间:2018-08-10 08:55:00

标签: php mysql sql

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.onea.two具有不同的值。

5 个答案:

答案 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)