使用另一行中的字段更新行NULL值

时间:2018-10-02 11:57:28

标签: mysql

我希望用另一行中的值更新一行中的任何NULL值,这些值通过另一个表链接。这个想法是更新初始值以获取其他任何额外的信息。我已经建立了这个环境来展示我想要发生的事情。

test_data:

id    value
------------
1     null
2     null
3     TEST

test_alt:

id1    id2
------------
1     2
1     3

这是我使用失败的查询:

UPDATE test_data AS A
INNER JOIN test_alt ON A.id=test_alt.id1
INNER JOIN test_data AS B ON test_alt.id2=B.id
SET A.value = IF(A.value IS NULL, B.value, A.value);

想要的test_data结果:

id    value
------------
1     TEST
2     null
3     TEST

查询后的结果:

id    value
------------
1     null
2     null
3     TEST

最初应该提到的是:我需要获取任何非null值(与哪个无关紧要),因此已经找到答案。

2 个答案:

答案 0 :(得分:1)

如果您真的不在乎选择哪个非null值,则可以加入并限制例如

 preg_replace('/<span[^>]+\>|<\/span>/i', '', $string_with_span_tag) //1. my answer
 preg_replace('#</?span[^>]*>#is', '', $string_with_span_tag) //2.@Zdimitriv's answer
 preg_replace('/<span[^>]+?[^>]+>|<\/span>/i', '', $string_with_span_tag) //3.@mcklayin's answer with edit

答案 1 :(得分:0)

也许是这样吗?

apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
    applicationId "com.yube.fasturl"
    minSdkVersion 15
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner 
    "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard- 
    android.txt'), 'proguard-rules.pro'
    }
    } 
    }

     dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support:design:27.1.0'
implementation 'com.github.florent37:materialtextfield:1.0.7'
implementation 'com.android.support.constraint:constraint- 
layout:1.0.2'
//noinspection GradleCompatible
implementation 'com.google.android.gms:play-services-ads:15.0.0'
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:recyclerview-v7:22.2.0'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 
'com.android.support.test.espresso:espresso-core:3.0.1'
implementation 'com.android.support:mediarouter-v7:27.1.0'
   }