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如何判斷欄位的值是不是空...