GVKun编程网logo

如何在没有ON条件的情况下使用mysql JOIN?(mysql不用join用什么)

7

以上就是给各位分享如何在没有ON条件的情况下使用mysqlJOIN?,其中也会对mysql不用join用什么进行解释,同时本文还将给你拓展android–如何在没有odex的情况下构建CM系统应用程序

以上就是给各位分享如何在没有ON条件的情况下使用mysql JOIN?,其中也会对mysql不用join用什么进行解释,同时本文还将给你拓展android – 如何在没有odex的情况下构建CM系统应用程序?、android – 如何在没有工件的情况下使用Renderscript模糊效果?、c# – 如何在没有*具有MethodInfo的情况下使用MSIL *在实例上调用方法?、c# – 如何在没有引入竞争条件的情况下等待RX主题的回复?等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何在没有ON条件的情况下使用mysql JOIN?(mysql不用join用什么)

如何在没有ON条件的情况下使用mysql JOIN?(mysql不用join用什么)

是否可以编写不带ON语句的联接查询?以及这些连接有何不同之处LEFT JOIN, RIGHT JOIN

答案1

小编典典

MySQL 文档涵盖了该主题。

这是一个简介。使用join或时inner joinon条件是可选的。这与ANSI标准不同,并且与几乎所有其他数据库不同。效果是crossjoin。同样,您可以使用带有的on子句cross join,该子句也与标准SQL不同。

交叉联接将创建笛卡尔乘积-即,第一个表的第一行和第二个表的第一行的每种可能组合。具有三行(’a’,’b’和’c’)的表和具有四行(例如1、2、3、4)的表的交叉联接将具有12行。

实际上,如果要进行交叉联接,请使用cross join

from A cross join B

远胜于:

from A, B

和:

from A join B -- with no on clause

on左右外部连接需要该子句,因此讨论与它们无关。

如果您需要了解联接的不同类型,则需要对关系数据库进行一些研究。在该级别的讨论中,Stackoverflow不合适。

android – 如何在没有odex的情况下构建CM系统应用程序?

android – 如何在没有odex的情况下构建CM系统应用程序?

当我构建CM7的系统应用程序(例如ADWLauncher)时,我切换到ADWLauncher的文件夹并运行“mm”命令,然后我得到.apk和.odex文件,我怎样才能获得带有dex的.apk文件.我的意思是我应该更改 Android.mk或generic.mk中的某个地方,让编译只是结果apk文件,可以直接instsall.

解决方法

试试这个mm WITH_DEXPREOPT = false -B

android – 如何在没有工件的情况下使用Renderscript模糊效果?

android – 如何在没有工件的情况下使用Renderscript模糊效果?

背景

有很多地方(包括here)显示如何使用Renderscript模糊图像,如下所示:

@TargetApi(VERSION_CODES.JELLY_BEAN_MR1)
public static Bitmap renderScriptBlur(Context context,Bitmap srcBitmap,@FloatRange(from = 0.0f,to = 25.0f) float radius) {
    if (srcBitmap == null)
        return null;
    Bitmap outputBitmap = null;
    RenderScript rs = null;
    try {
        rs = RenderScript.create(context);
        outputBitmap = Bitmap.createBitmap(srcBitmap.getWidth(),srcBitmap.getHeight(),Bitmap.Config.ARGB_8888);
        final Canvas canvas = new Canvas(outputBitmap);
        canvas.drawBitmap(srcBitmap,null);
        Allocation overlayAlloc = Allocation.createFromBitmap(rs,outputBitmap);
        ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs,Element.U8_4(rs));
        blur.setInput(overlayAlloc);
        blur.seTradius(radius);
        blur.forEach(overlayAlloc);
        overlayAlloc.copyTo(outputBitmap);
        return outputBitmap;
    } catch (Exception ex) {
        if (outputBitmap != null)
            outputBitmap.recycle();
        return srcBitmap;
    } finally {
        if (rs != null)
            rs.destroy();
    }
}

问题

通常它工作得很好,但是当使用一些图像和/或半径设置时,输出图像具有看起来像扫描线的工件:

enter image description here

我试过的

我发现有一个更好的模糊解决方案(如here),但它们不使用Renderscript,也很慢并且耗费内存.

我也尝试使输入图像更小,但输出仍然有扫描线伪像.

最后,我还报道了这个,here.

这个问题

是否有可能使用Renderscript模糊图像而没有那些Artifcats?我写的是什么问题?

解决方法

问题出在我使用的算法上.感谢 this github项目,我发现了问题(可能没有使用正确的分配类型)并使用了更好的方法:

private static final atomicreference<RenderScript> sRenderscript = new atomicreference<>();


public static Bitmap blur(Context context,Bitmap bitmap) {
    return blur(context,bitmap,4,false,false);
}

public static Bitmap blur(Context context,Bitmap bitmap,float radius) {
    return blur(context,radius,Bitmap bitmapOriginal,to = 25.0f) float radius,boolean overrideOriginal,boolean recycleOriginal) {
    if (bitmapOriginal == null || bitmapOriginal.isRecycled())
        return null;
    RenderScript rs = sRenderscript.get();
    if (rs == null)
        if (!sRenderscript.compareAndSet(null,rs = RenderScript.create(context)) && rs != null)
            rs.destroy();
        else
            rs = sRenderscript.get();
    final Bitmap inputBitmap = bitmapOriginal.getConfig() == Config.ARGB_8888 ? bitmapOriginal : bitmapOriginal.copy(Config.ARGB_8888,true);
    final Bitmap outputBitmap = overrideOriginal ? bitmapOriginal : Bitmap.createBitmap(bitmapOriginal.getWidth(),bitmapOriginal.getHeight(),Config.ARGB_8888);
    final Allocation input = Allocation.createFromBitmap(rs,inputBitmap);
    final Allocation output = Allocation.createTyped(rs,input.getType());
    final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs,Element.U8_4(rs));
    script.seTradius(radius);
    script.setInput(input);
    script.forEach(output);
    if (recycleOriginal && !overrideOriginal)
        bitmapOriginal.recycle();
    output.copyTo(outputBitmap);
    return outputBitmap;
}

现在一切顺利.

c# – 如何在没有*具有MethodInfo的情况下使用MSIL *在实例上调用方法?

c# – 如何在没有*具有MethodInfo的情况下使用MSIL *在实例上调用方法?

我有一个遵循特定约定的类的数字属性.例如.

Person1 { get; set; }
Person2 { get; set; }
Person3 { get; set; }

我不想在类的实例上获取MethodInfo对象,而是执行类似这样的操作:

...
il.Emit(OpCodes.Callvirt,[instance]["set_Person" + index]);

上面的代码行是说明性的,而不是我认为它应该是什么.

有谁知道我怎么能这样做?

解决方法

它无法完成,我不明白这一点或任何潜在的好处. MSIL Callvirt指令不接受描述要调用的内容的字符串,它采用指向特定类型的特定方法的元数据标记,并且通过反射获取该值的唯一方法是使用MethodInfo实例.

这似乎不是一个复杂的选择:

il.Emit(OpCodes.Callvirt,type.getmethod("set_Person" + index));

c# – 如何在没有引入竞争条件的情况下等待RX主题的回复?

c# – 如何在没有引入竞争条件的情况下等待RX主题的回复?

我有一个服务允许来电者发送命令和异步接收响应.在一个实际的应用中,这些动作相当断开(一些动作会发送一个命令,响应将被独立处理).

但是,在我的测试中,我需要发送一个命令,然后在继续测试之前等待(第一个)响应.

响应使用RX发布,我的第一次尝试代码是这样的:

service.SendCommand("BLAH");
await service.Responses.FirstAsync();

这个问题是,FirstAsync只有在响应到来之后才能工作,等待已经被打了.如果服务流程非常快,那么测试就会等待着.

我的下一次尝试解决这个问题是在发送命令之前调用FirstAsync(),以便即使在等待之前到达,也会产生结果:

var firstResponse = service.Responses.FirstAsync();
service.SendCommand("BLAH");
await firstResponse;

然而,这仍然以同样的方式失败.似乎只有当等待命中(GetAwaiter被调用)它才开始收听;所以存在完全相同的竞争条件.

如果我将主题改为具有缓冲区(或计时器)的ReplaySubject,那么我可以“解决”这个;然而在我的生产课上这样做是没有意义的;它只会用于测试.

在RX中能做到这一点的“正确”方法是什么?如何设置一个将不会引入竞争条件的方式在流上接收第一个事件的东西?

这是一个小测试,以“单线程”的方式说明问题.这个测试会不定期地停止:

[Fact]
public async Task Mytest()
{
    var x = new Subject<bool>();

    // Subscribe to the first bool (but don't await it yet)
    var firstBool = x.FirstAsync();

    // Send the first bool
    x.OnNext(true);

    // Await the task that receives the first bool
    var b = await firstBool; // <-- hangs here; presumably because firstBool didn't start monitoring until GetAwaiter was called?


    Assert.Equal(true,b);
}

我甚至尝试在我的测试中调用Replay(),它会缓冲结果;但这并不改变任何事情:

[Fact]
public async Task Mytest()
{
    var x = new Subject<bool>();

    var firstBool = x.Replay();

    // Send the first bool
    x.OnNext(true);

    // Await the task that receives the first bool
    var b = await firstBool.FirstAsync(); // <-- Still hangs here


    Assert.Equal(true,b);
}

解决方法

您可以使用AsyncSubject来执行此操作
[Fact]
public async Task Mytest()
{
    var x = new Subject<bool>();

    var firstBool = x.FirstAsync().PublishLast(); // PublishLast wraps an AsyncSubject
    firstBool.Connect();

    // Send the first bool
    x.OnNext(true);

    // Await the task that receives the first bool
    var b = await firstBool;


    Assert.Equal(true,b);
}

AsyncSubject基本上缓存在调用OnComplete之前的最后接收的值,然后重播它.

关于如何在没有ON条件的情况下使用mysql JOIN?mysql不用join用什么的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于android – 如何在没有odex的情况下构建CM系统应用程序?、android – 如何在没有工件的情况下使用Renderscript模糊效果?、c# – 如何在没有*具有MethodInfo的情况下使用MSIL *在实例上调用方法?、c# – 如何在没有引入竞争条件的情况下等待RX主题的回复?等相关内容,可以在本站寻找。

本文标签: