mysql在select中加入一个查询其他表后的结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql在select中加入一个查询其他表后的结果相关的知识,希望对你有一定的参考价值。

有2个表:wish_like(id,accout) 和 wish(id,time,gender)

条件:从前端传入了一个参数 accout.(php:$accout) ,已知accout .
需求:获取前6条wish的记录,并且分别判断这些记录的id,在wish_like里面有没有与传入参数accout对应的accout,如果有like为1,没有like为0 .

输出:每条记录的id,time,gender 和 like .

最高100分了...

select w.id,w.time,w.gender,(select case when w.id=wl.id and wl.account=@account then 1 else 0 end from wish_like wl) like from wish w limit 6
@account就是你前端传入的account参数,我只是放了一个占位符在这里,你自己拼接sql的时候替换成实际值。追问

select w.id,w.time,w.gender,w.content,w.title,(select case when w.id = wl.wish_id and wl.accout='$accout' then 1 else 0 end as liked from Wish_Like wl) like from Wall w order by w.id desc limit 6 错了.

追答

啥子错误?

追问

在哪里都运行不起来...错误 QQ:623144565,分肯定给你

追答

php和mysql我都没用过,我是依据sql server写的。

参考技术A select
t2.id,t2.time,t2.gender,

case when t1.id is null then 1 else 0 end like
from wish t2

left join wish_like t1 on t2.id=t1.id

and t1.account=你的值
order by t2.id limit 0,6
没用过mysql 如果有不对的 自己改下追问

我就是因为不会...怎么修改...

如何在MySQL中加入查询以根据距离计算和Google地理编码查找WordPress帖子?

我正在尝试使用WordPress表结构准备一个基于用户当前位置查找位置的查询。

我正在使用WordPress开发此应用程序。

我创建了一个名为store的自定义帖子类型。当从管理员添加商店时,我能够使用地理编码找到它的lat/lng值,并将它们存储在wp_postmeta表中,对齐两个元键store_latstore_lng,同时基本信息存储在wp_posts表中。

我希望通过使用两点之间的距离过滤wp_postmeta表中的记录来从wp_posts表中获取商店,其中一个点是用户的当前位置。

我为wp_postmeta表中的每个post_id在一行中构建了以下查询获取lat / lng值,这很好:

SELECT a.post_id, a.meta_value as lat, b.meta_value as lng
FROM
wp_postmeta as a, 
wp_postmeta as b

WHERE a.meta_key = "store_lat"
AND b.meta_key= "store_lng"
AND a.post_id = b.post_id

我还根据用户的当前位置查询“最近的位置”:

SELECT id, ( 6371 * acos( cos( radians(22) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(88) ) + sin( radians(22) ) * sin( radians( lat ) ) ) ) AS distance FROM *** HAVING distance < 1 ORDER BY distance LIMIT 0 , 20;

但我不能加入这两个查询来找到我们的商店。我无法弄清楚用什么代替***并从wp_posts表中获得所需的商店。

答案

我建议这样的事情:

SELECT
store.post_id       AS store_id,
6371 * 2 *  ASIN
                (
                    SQRT
                    (
                        POWER(SIN((store.lat - ABS(user.lat)) * PI()/180 / 2),2)
                        + COS(store.lat * PI()/180) * COS(ABS(user.lat) * PI()/180) * POWER(SIN((store.lng - user.lng) * PI()/180 / 2), 2)
                    )
                )       AS distance                                      
FROM    (SELECT 0.5 AS lat,
                1       AS lng
    ) AS user,
    (SELECT
        a.post_id,
        a.meta_value    AS lat,
        b.meta_value    AS lng
    FROM    wp_postmeta AS a,
            wp_postmeta AS b
    WHERE   a.meta_key = "store_lat" AND
            b.meta_key = "store_lng" AND
            a.post_id = b.post_id
    ) AS store                                                            
ORDER BY distance ASC                                                     
LIMIT 0,20

当然,您可以以不同方式移交用户的位置,并应用您的最大距离(例如,距离<1)。

我将距离函数更改为我找到的here

以上是关于mysql在select中加入一个查询其他表后的结果的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL 中加入表后,通过从当前日期中减去日期列来创建新列

在 MySQL 中加入 CASE

选择后的MySQL联合[重复]

MySQL查询日期在结果中加入汉字“年”“月”“日”

MySQL查询日期在结果中加入汉字“年”“月”“日”

在 MYSQL 中加入具有 SUM 问题的表