[英]Mysql query with special characters?
我(新手)很難理解這個查詢:
$result = mysql_query("
SELECT q.*, IF(v.id,1,0) AS voted
FROM quotes AS q
LEFT JOIN quotes_votes AS v
ON q.id = v.qid
AND v.ip =".$ip."
AND v.date_submit = '".$today."'
");
任何人都可以通過if語句和v.id,1,0提供有關這些短符號(例如“ q。*”)的更多信息。 有任何資料可以閱讀更多關於此的信息嗎?
非常感謝你。
這是表格的樣子:
CREATE TABLE `quotes` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`txt` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`author` varchar(32) collate utf8_unicode_ci NOT NULL default '',
`bgc` varchar(32) collate utf8_unicode_ci NOT NULL default '',
`votes` mediumint(9) unsigned NOT NULL default '0',
`vsum` int(11) unsigned NOT NULL default '0',
`rating` double NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `rating` (`rating`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16 ;
CREATE TABLE `quotes_votes` (
`id` mediumint(9) unsigned NOT NULL auto_increment,
`qid` smallint(6) unsigned NOT NULL default '0',
`ip` int(10) NOT NULL default '0',
`vote` tinyint(1) NOT NULL default '0',
`date_submit` date NOT NULL default '0000-00-00',
`dt_submit` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `qid` (`qid`,`ip`,`date_submit`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
關於select q.*
,僅表示從表別名q
獲取所有字段,該別名恰好是表quotes
。 就像select *
但僅用於一張桌子。
關於IF(v.id,1,0)
,這實際上是一種MySQLism 。 IF
語句計算第一個參數中給出的表達式,如果為true
,則返回第二個參數。 否則,它將返回第三個參數。 因此,您知道IF
會出現1
或0
。 您現在可能想知道如何評估v.id
以返回邏輯值,其背后的原因是MySQL將布爾值視為TINYINT(1)
對待,其中0
被視為false
,非零值被視為true
。
因此可以將其改寫為IF(v.id != 0, 1, 0)
,這可能更易於閱讀。 鑒於v.id
不能為null的事實,那么您可以用IF(v.id = 0, 0, 1)
來重寫它。 無論如何,您可以更進一步,只需將其替換為v.id != 0
:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.