thinkphp表裡的欄位值就是另表裡的欄位值怎

2021-03-07 17:12:40 字數 4232 閱讀 6685

1樓:草原上之狼

thinkphp內建的orm和activerecord模式實現了方便的資料存取操作,而且新版增加的連貫操作功能更是讓這個資料操作更加清晰,但是thinkphp仍然保留了原生的sql查詢和執行操作支援,為了滿足複雜查詢的需要和一些特殊的資料操作,sql查詢的返回值因為是直接返回的db類的查詢結果,沒有做任何的處理。而且可以支援查詢快取。主要包括下面兩個方法:

1、query方法

query方法是用於sql查詢操作,和select一樣返回資料集,例如:

$model = new model() // 例項化一個model物件 沒有對應任何資料表

$model->query("select * from think_user where status=1");

2、execute方法

用於更新和寫入資料的sql操作,返回影響的記錄數,例如:

$model = new model() // 例項化一個model物件 沒有對應任何資料表

$model->execute("update think_user set name='thinkphp' where status=1");

關於原生sql操作的一點補充

通常使用原生sql需要手動加上當前要查詢的表名,如果你的表名以後會變化的話,那麼就需要修改每個原生sql查詢的sql語句了,針對這個情況,tp還提供了一個小的技巧來幫助解決這個問題。

2樓:匿名使用者

插入與更新資料的時候,把資料同時賦值給兩個欄位就可以了

在thinkphp中,已經知道一個欄位,怎麼把同一個表裡的另一個欄位查出來

3樓:匿名使用者

thinkphp內建的orm和activerecord模式實現了方便的資料存取操作

,而且新版增加的連貫操作功能更是讓這個資料操作更加清晰,但是thinkphp仍然保留了原生的sql查詢和執行操作支援,為了滿足複雜查詢的需要和一些特殊的資料操作,sql查詢的返回值因為是直接返回的db類的查詢結果,沒有做任何的處理。而且可以支援查詢快取。主要包括下面兩個方法:

1、query方法

query方法是用於sql查詢操作,和select一樣返回資料集,例如:

$model = new model() // 例項化一個model物件 沒有對應任何資料表

$model->query("select * from think_user where status=1");

2、execute方法

用於更新和寫入資料的sql操作,返回影響的記錄數,例如:

$model = new model() // 例項化一個model物件 沒有對應任何資料表

$model->execute("update think_user set name='thinkphp' where status=1");

關於原生sql操作的一點補充

通常使用原生sql需要手動加上當前要查詢的表名,如果你的表名以後會變化的話,那麼就需要修改每個原生sql查詢的sql語句了,針對這個情況,tp還提供了一個小的技巧來幫助解決這個問題。

例如:$model = m("user");

$model->query('select * from __table__ where status>1');

我們這裡使用了__table__ 這樣一個字串,系統在解析的時候會自動替換成當前模型對應的表名,這樣就可以做到即使模型對應的表名有所變化,仍然不用修改原生的sql語句。

********************==

還有別的方法請檢視官方手冊 搜尋關鍵字查詢即可

4樓:匿名使用者

$memberdao = d('member');

$memberlist = $memberdao->where("id='".$_get['id']."'")->select();

已知id的的起哦member其他欄位,想得到指定欄位的話可以這樣比如得到username、id和emaill$memberlist = $memberdao->field('username,id,email')->where("id='".$_get['id']."'")->select();

更新一個表的欄位值等於另一個表的欄位值的sql語句

5樓:海天盛筵

sql語句如下:

更新aseta.ty2=b.ty1fromt2a,t1bwherea.n2=b.n1

將t2表的ty2欄位的值更新為表的ty1欄位的值。假設表的n2=b表的n1。

6樓:該使用者未註冊

sql語句如下:

update a

set a.ty2=b.ty1

from t2 a,t1 b

where a.n2=b.n1

更新t2表的

ty2欄位的值為t1表的ty1欄位的值,條件是a表的n2=b表的n1

擴充套件資料:

常用sql語句——

1、說明:建立資料庫

create database database-name

2、說明:刪除資料庫

drop database dbname

3、說明:備份sql server

--- 建立 備份資料的 device

use master

exec sp_addumpdevice 'disk', 'testback', 'c:\mssql7backup\mynwind_1.dat'

--- 開始 備份

backup database pubs to testback

4、說明:建立新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根據已有的表建立新表:

a:create table tab_new like tab_old (使用舊錶建立新表)

b:create table tab_new as select col1,col2… from tab_old definition only

5、說明:刪除新表

drop table tabname

6、說明:增加一個列

alter table tabname add column col type

注:列增加後將不能刪除。db2中列加上後資料型別也不能改變,唯一能改變的是增加varchar型別的長度。

7樓:匿名使用者

直接update的話,這個應該足夠了,嘗試一下告訴我結果update mumbe t

set pass = (select ppass1 from mumbe1 where id = t.id)

where not exists (select 1 from mumbe1 where id = t.id and ppass1 = t.pass)

直接檢測 哪個id 下 pass欄位資料 不一樣 id顯示出來,我手動更新

select distinct id

from mumbe t, mumbe1 t1where t.id = t1.id

and t.pass <> t1.ppass1

8樓:強濰僑弘

這個問題好像以前沒見過的,不過可以說個思路,你先進想查詢的,就是查這兩個表通過他們的n1和n2的值是否相等的,要是有相等的,你就先將n2中的資料刪掉,將n1中資料插入進去,去試一下!不知道行不行的!

9樓:匿名使用者

sql server merge 例子

可以滿足 多種情況的處理

比如 匹配的時候,更新

源表有,目標表沒有,插入

目標表有,源表沒有,目標表該資料刪除

10樓:匿名使用者

update a set a.ty2=b.ty1 from t2 a,t1 b where a.

n2=b.n1 --保證沒有問題,不信可以先測試一下 這個問題好像以前沒見過的,不過可以說個

11樓:匿名使用者

update bobo set mumbe.pass=mumbe1.ppass1 where mumbe.pass!=mumbe1.ppass1

sql根據欄位不同值查詢不同表中的欄位

select case role when 0 then select name from tablea where dd 11 else select name from tableb where dd 11 end as name from post 就是使用 case 我沒有實驗過。如果有心在...

如何查詢某欄位的值最大的前,如何查詢某欄位的一個值最大的前10個

select from 表 order by 排序欄位 limit 0 10 sqlserver select top 10 欄位dao 名專 from 表名屬 order by 欄位名desc oracle select 欄位名 from select 欄位名 from 表名 order by 欄...

ORACLCEsql如何判斷欄位的值是不是空值

在sql中 空值bai有null 和 du 的形式 當是null的時候zhi用dao is null判斷內當是 的時候用 判斷比如容 select from table where enddate is null select from table where str sql如何判斷欄位的值是不是空...